Документ XML, экранируйте этот символ - PullRequest
2 голосов
/ 27 июня 2011

У меня есть XML-документ с символом разделителя абзаца в некоторых узлах как & # x2029;

Когда я загружаю XML в объект XmlDocument, я больше не вижу этот символ. Вместо этого я вижу пространство. Как заставить его показать & # x2029?


XmlDocument doc = new XmlDocument();
doc.Load(xmlFilePath); 
XmlNodeList nodes = doc.SelectNodes("/catalog/classes"); 
foreach(XmlNode node in nodes) { 
    string category = node["category"]; 
    bool containerSeperator = category.Contains("
") // this should return true but it returns false. This category has a paragraph separator
}

1 Ответ

0 голосов
/ 27 июня 2011

Тест № 1:

var xmlText = @"<Test>&amp;</Test>";
var xml = XDocument.Parse(xmlText);
var result = xml.Element("Test").Value;

result не будет &amp;, результат будет ".Таким образом, Contains("&amp;") никогда не будет истинным.

Тест # 2:

var xmlText = @"<Test>&#x2029;</Test>";
var xml = XDocument.Parse(xmlText);
var result = Encoding.Unicode.GetBytes(xml.Element("Test").Value);

результат будет двух байтов: x20 и x29, что в точности соответствует тому, что читается из XML,Итак, байты есть, вы их просто не видите, так как этот символ Unicode не читается.

...