【发布时间】:2017-08-30 17:24:39
【问题描述】:
我正在构建一个 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 字符串采用无格式格式吗?
-
myXDoc.Descendants("element2").First().ToString()。顺便说一句,您的示例代码在编译之前需要做一些工作。 -
在元素上调用 ToString() 会导致“
Pork&Beans ”,这并不理想。我希望得到“猪肉和豆类”。 -
@Sach 不,我只希望获得我在其 XML 安全格式中查询的那个值。
-
另外,如果您使用
XDocument和朋友,您无需担心数据格式是否正确,它会为您完成。如果您是手动构建 XML...首先您不应该...
标签: c# xml linq linq-to-xml