如何以 XML 转义格式检索 XDocument 的元素值?
How do I retrieve an XDocument's Element Value in XML escaped format?
我正在构建 XDocument 并且我有单元测试来测试输出。我要测试的一件事是无效字符串的格式正确地设置为 XML。我发现在 XDoc 上调用 .ToString() 本身可以正确格式化 XML 的无效字符串。但是,在我的测试中,我正在从 XDoc 中检索特定的元素或属性并测试这些值。这不会格式化 XML 的值。如何以转义格式获取这些值?
答案:(感谢 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&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
以确保其中正好有一个 child。
System.Xml.XmlDocument
是另一种选择,因为 XmlNode
有一个 InnerXml
属性 可以满足您的需求:
var morePorkAndBeans = doc.SelectSingleNode("//element2").InnerXml;
我正在构建 XDocument 并且我有单元测试来测试输出。我要测试的一件事是无效字符串的格式正确地设置为 XML。我发现在 XDoc 上调用 .ToString() 本身可以正确格式化 XML 的无效字符串。但是,在我的测试中,我正在从 XDoc 中检索特定的元素或属性并测试这些值。这不会格式化 XML 的值。如何以转义格式获取这些值?
答案:(感谢 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&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
以确保其中正好有一个 child。
System.Xml.XmlDocument
是另一种选择,因为 XmlNode
有一个 InnerXml
属性 可以满足您的需求:
var morePorkAndBeans = doc.SelectSingleNode("//element2").InnerXml;