2013-05-22 7 views
1

Я использую xmlunit для сравнения двух текстовых файлов. Управления XML является:XmlUnit и дочерние узлы

<books> 
    <book> 
     <name>Angels &amp; Demons</name> 
     <isbn>9971-5-0210-0</isbn> 
     <author>Dan Brown</author> 
     <category></category> 
    </book> 
</books> 

Я сравниваю это с другим куском XML, который имеет те и элементы меняются местами.

<books> 
    <book> 
     <isbn>9971-5-0210-0</isbn> 
     <name>Angels &amp; Demons</name> 
     <author>Dan Brown</author> 
     <category></category> 
    </book> 
</books> 

Объект Diff сообщает следующее различие:

Expected sequence of child nodes '1' but was '3' - comparing <name...> at /books[1]/book[1]/name[1] to <name...> at /books[1]/book[1]/name[1] 

Если <name> является дочерний узел '1', не <isbn> быть дочерний узел '2'?

+0

Похоже XMLUnit рассчитывает возврат каретки в XML в качестве дочерних узлов. Установка следующего \t \t ** XMLUnit.setIgnoreWhitespace (true); ** дал более интуитивный результат «Ожидаемая последовательность дочерних узлов» 0, но был «1» - сравнение в/struct [1]/int [1] to at/struct [1]/int [1] ' – timmy

ответ

0

Кажется, что XmlUnit подсчитывает возврат каретки в xml как дочерние узлы. Установка следующего XMLUnit.setIgnoreWhitespace (true); дал более интуитивный результат ожидаемой последовательности дочерних узлов '0' но '1' - сравнение <int...> at /struct[1]/int[1] to <int...> at /struct[1]/int[1]

1

Для XMLUnit 2.X Версия:

Для версии XMLUnit 2.xx, в XMLUnit. setIgnoreWhitespace (true) больше не применимо. Теперь вы можете добавить «игнорирование пробелов» непосредственно в DiffBuilder, добавив DiffBuilder.ignoreWhitespace().

Diff diffXml =DiffBuilder.compare(expectedXml).withTest(actualXml).normalizeWhitespace().checkForSimilar().build(); 

для утверждения xmls аналогичны, вы можете, например. делать:

MatcherAssert.assertThat(diffXml.toString(), is("[identical]")); 

Для furhter информации об изменениях между 1.x до 2.x см: https://github.com/xmlunit/user-guide/wiki/Migrating-from-XMLUnit-1.x-to-2.x

Смежные вопросы