Я передаю данные XML на сервер из текстового окна, теперь проблема заключается в том, что XML дает проблемы с такими символами, как & < |. Поэтому я хочу заменить эти символы на их эквивалентные коды.Замена специального символа на их коды
если я использую функцию string.replace, она заменит замененные символы.
.Replace("&", "&")
.Replace("<", "<")
.Replace("|", "|")
.Replace("!", "!")
.Replace("#", "#")
Как только он проходит полную цепочку снова и снова. Так & < # станет "&#38;&#60;
"
Я также попытался словарь метод:
var replacements = new Dictionary<string, string>
{
{"&", "&"},
{"<", "<"},
{"|", "|"},
{"!", "!"},
{"#", "#"}
}
var output = replacements.Aggregate(input, (current, replacement) => current.Replace(replacement.Key, replacement.Value));
return output;
Но тот же вопрос здесь. Я также попробовал метод строкового построителя, но тот же повторяющийся вопрос о замене. Любой совет?
Рассмотрите возможность использования регулярного выражения. –
Есть хорошо установленные способы избежать/unescape XML-значений и построить XML с правильно экранированными значениями в нем. Нет никакой пользы от попыток сделать свой собственный с нуля. Я бы посоветовал, как это сделать, но не совсем ясно, что вы пытаетесь сделать (где код, который вы используете для построения XML)? Сосредоточение вашего вопроса вокруг этого, вероятно, даст вам гораздо более плодотворную информацию. – JLRishe
Если у вас есть доступ, вы можете попробовать [HttpServerUtility.HtmlEncode] (https://msdn.microsoft.com/en-us/library/w3te6wfz (v = vs.110) .aspx) –