使用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树不是.为什么?
我正在检查string给出的两个XML元素是否与此方法相同:
private static bool XmlEquals(string s1, string s2)
{
return XNode.DeepEquals(XElement.Parse(s1), XElement.Parse(s2));
}
Run Code Online (Sandbox Code Playgroud)
除非其中一个元素具有开始和结束标记,另一个元素具有如下所示的闭合标记,否则此工作:
<MyElement SomeAttribute="some value" />
<MyElement SomeAttribute="some value"></MyElement>
Run Code Online (Sandbox Code Playgroud)
我能以某种方式比较两个XML元素,上述情况被认为是相同的吗?