如何以 XML 转义格式检索 XDocument 的元素值?



我正在构建一个Xdocument,并且我进行了单位测试来测试输出。我要测试的一件事是,适当地为XML格式化了无效的字符串。我已经发现XDOC上的调用.toString()本身适当地格式化了XML的无效字符串。但是,在我的测试中,我正在从XDOC中检索特定元素或属性并测试值。这不会格式化XML的值。我该如何以其逃脱的格式获得这些值?

答案:( thx ed plunkett)

myXDoc.Descendants("element2").First().FirstNode.ToString();
// result "Pork&Beans"

样本:

var xml = 
"<element1>" +
    "<element2>Pork&Beans</element2>" +
"</element1>";
var myXDoc = XDocument.Load(xml);
var xDocString = myXDoc.ToString();
// result is formatted - <element1> <element2>Pork&amp;Beans</element2> </element1>
var element2Value = myXDoc.Decendents("element2").First().Value;
// result is unformatted - Pork&Beans

得到它:XML中的文本元素也是节点。

var el2XML = myXDoc.Descendants("element2").First();
var porkAndAmpSemicolonBeans = el2XML.FirstNode.ToString();

您还需要检查el2XML.Nodes.Count,以确保那里有一个孩子。


System.Xml.XmlDocument是另一个选择,因为XmlNode具有InnerXml属性,可以为您提供所需的内容:

var morePorkAndBeans = doc.SelectSingleNode("//element2").InnerXml;

最新更新