And*_*bel 8 .net c# xml linq-to-xml
使用XNode.DeepEquals()比较XML元素,它意外返回false的,我认为应该是等价的两个XML文档.
var xmlFromString = XDocument.Parse("<someXml xmlns=\"someNamespace\"/>");
var xmlDirect = new XDocument(new XElement(
XNamespace.Get("someNamespace") + "someXml"));
Console.WriteLine(xmlFromString.ToString());
Console.WriteLine(xmlDirect.ToString());
Console.WriteLine(XNode.DeepEquals(xmlFromString, xmlDirect));
Console.WriteLine(xmlFromString.ToString() == xmlDirect.ToString());
Run Code Online (Sandbox Code Playgroud)
<someXml xmlns="someNamespace" />
<someXml xmlns="someNamespace" />
False
True
Run Code Online (Sandbox Code Playgroud)
字符串被认为是相同的,但XML树不是.为什么?
我已经制定了有什么区别的,但不是为什么它是不同的.
在第一种形式中,您有一个xmlns属性.在第二种形式中,你没有 - 不是在Attributes()回报方面.如果你明确构造一个XAttribute,DeepEquals将返回true:
var xmlDirect = new XDocument(new XElement(
XNamespace.Get("someNamespace") + "someXml",
new XAttribute("xmlns", "someNamespace")));
Run Code Online (Sandbox Code Playgroud)
这就好像命名空间在将树转换为文本表示时仅计为属性,基本上.
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |