Как запретить XElement декодировать ссылки на сущности символов - PullRequest
0 голосов
/ 29 октября 2011

У меня есть строка XML, которая содержит апостроф.Я заменяю апостроф его эквивалентом и анализирую пересмотренную строку в XElement.XElement, однако, превращает «обратно в апостроф».

Как заставить XElement.Parse сохранить закодированную строку?

string originalXML = @"<Description><data>Mark's Data</data></Description>"; //for illustration purposes only
string encodedApostrophe = originalXML.Replace("'", "&#39;");
XElement xe = XElement.Parse(encodedApostrophe);

1 Ответ

1 голос
/ 29 октября 2011

Это правильное поведение. В местах, где разрешено ', оно работает так же, как &apos;, &#39; или &#x27;. Если вы хотите включить в XML буквальную строку &#39;, вам следует закодировать &:

originalXML.Replace("'", "&amp;#39;")

Или проанализируйте исходный XML и измените его:

XElement xe = XElement.Parse(originalXML);

var data = xe.Element("data");

data.Value = data.Value.Replace("'", "&#39;");

Но делать это кажется действительно странным. Возможно, есть лучшее решение проблемы, которую вы пытаетесь решить.

Кроме того, эта кодировка не является «эквивалентной ASCII», они называются ссылками на символьные объекты . А числовые значения основаны на кодовой точке Unicode символа.

...