xmlunit видит различия в идентичных XML

1

Я использую xmlunit в первый раз, чтобы сравнить 2 штуки xml. Это показывает большие надежды, но не удалось в первом препятствии. Он сравнивает две почти идентичные части xml и утверждает, что они разные.

Diff diff = new Diff(control, test);
diff.overrideDifferenceListener(new IgnoreTextAndAttributeValuesDifferenceListener()); 

Результат, возвращаемый xmlunit, выглядит следующим образом:

[different] Expected number of child nodes '3' but was '2' - comparing <SOAP-ENV:Envelope...> at /Envelope[1] to <SOAP-ENV:Envelope...> at /Envelope[1]

Но xml почти то же самое. Здесь контроль:

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope"> <SOAP-ENV:Body> <v:messagegroup xmlns:v="http://www.outfit.net/chargingandpayments/message/1.0"> <v:request> <v:msgcontrol> <v:country>GB</v:country> <v:caller> <v:name>CORE</v:name> <v:signature>Signature</v:signature> <v:version>v10</v:version> </v:caller> <v:headers/> </v:msgcontrol> <v:validate> <v:accountId>MSISDN</v:accountId> </v:validate> </v:request> </v:messagegroup> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

и здесь тестовая строка:

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2001/12/soap-envelope"> <SOAP-ENV:Body> <v:messagegroup xmlns:v="http://www.outfit.net/chargingandpayments/message/1.0"> <v:request> <v:msgcontrol> <v:country>GB</v:country> <v:caller> <v:name>CORE</v:name> <v:signature>Signature</v:signature> <v:version>v10</v:version> </v:caller> <v:headers/> </v:msgcontrol> <v:validate> <v:accountId>lblabla</v:accountId> </v:validate> </v:request> </v:messagegroup> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Что я делаю не так?

Теги:
soap
xmlunit

3 ответа

1

Разница заключается в количестве детей SOAP-ENV:Envelope котором XMLUnit видит двух или трех детей. Я вижу только одного "реального" ребенка, поэтому остальные, вероятно, состоят из простейшего содержимого элемента.

XMLUnit.setIgnoreWhitespace(true);

перед оценкой разницы следует исправить это.

0

Значение <v:accountId></v:accountId> не совпадает для двух xmls.

Первый - это <v:accountId>MSISDN</v:accountId> а второй - <v:accountId>lblabla</v:accountId>

  • 1
    во-первых, я сказал ему игнорировать контент, а во-вторых, даже если они одинаковые, он все равно завершается с тем же сообщением, которое относится к количеству дочерних узлов, а не к контенту.
  • 0
    С тем же значением это работает для меня. Я использую XMLUnit.setNormalizeWhitespace(Boolean.TRUE); и XMLUnit.setIgnoreComments(Boolean.TRUE);
Показать ещё 3 комментария
0

Возможно, вам придется отключить правила для сравнения узлов с XMLUnit:

XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);
  • 0
    после применения этих изменений результаты были одинаковыми. «Ожидаемое количество дочерних узлов« 3 », но было« 2 »»

Ещё вопросы

Сообщество Overcoder
Наверх
Меню