Существует ли простой способ сравнения, если 2 XDocuments равны, игнорируя порядок элементов / атрибутов? - PullRequest
19 голосов
/ 18 мая 2009

Модульное тестирование моего кода сериализации. Я обнаружил, что один код не выполнен, потому что у меня были атрибуты, перечисленные в другом порядке (я просто сравниваю значения XDocument.ToString ()), и хотя я мог это исправить, для меня это действительно не имеет значения в каком порядке элементы или атрибуты появляются, пока они все там с правильным именем на правильном уровне иерархии. Я мог бы написать метод для этого, но мне интересно, есть ли простой способ, о котором я не знаю.

Ответы [ 3 ]

11 голосов
/ 18 мая 2009

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

4 голосов
/ 26 мая 2010

В дополнение к "Адаму Рут" я прочитал ссылку на майкрософт, и этот пост очень полезен ..

Эрик Уайт: http://blogs.msdn.com/b/ericwhite/archive/2009/01/28/equality-semantics-of-linq-to-xml-trees.aspx

2 голосов
/ 03 июня 2009

Попробуйте утилиту Microsoft XML Diff and patch здесь или в Google "Xml Diff"

...