是否有一种简单的方法可以比较2个XDocuments是否相等而忽略了元素/属性顺序?

时间:2009-05-17 22:14:00

标签: c# xml linq-to-xml

单元测试我的序列化代码我发现一个失败,因为我有不同顺序列出的属性(我只是比较XDocument.ToString()值)而我可以修复它,这对我来说无关紧要元素或属性以什么顺序出现,只要它们在正确的层次结构中具有正确的名称。我可能会写一个方法来做这个,但我想知道是否有一个我不知道的简单内置方式。

3 个答案:

答案 0 :(得分:11)

XNode有一个DeepEquals函数可以解决问题。

http://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.deepequals.aspx

更新:

似乎DeepEquals功能并不总能正常工作。您可能最好实施自己的比较例程。

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=400469

答案 1 :(得分:4)

继“Adam Ruth”之后,我通读了微软链接,这篇博文非常实用。

Eric White: http://blogs.msdn.com/b/ericwhite/archive/2009/01/28/equality-semantics-of-linq-to-xml-trees.aspx

答案 2 :(得分:2)

尝试使用Microsoft XML Diff和修补程序实用程序here 或google“Xml Diff”