Использование XMLUnit (Java) для сравнения строк XML, содержащих сущности - PullRequest
0 голосов
/ 20 января 2012

JDK 1.7.0 XMLUnit 1.3

При сравнении этой управляющей XML-строки:

            String controlXml = "" +
                "<client>" +
                "   <name>Hello&nbsp;World</name>" +
                "</client>";

С этой тестовой XML-строкой:

            String testXml = "" + 
                "<client>" +
                "   <name>Hello&nbsp;World</name>" +
                "</client>";

XMLUNIT возвращает false, и я ожидал, что он вернет true (без различий).

Вот мое использование:

XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
Diff diff = new Diff(controlXml,testXml);
boolean result = diff.similar(); //result is false

Я также получаю следующую ошибку в окне консоли:

[Fatal Error] :1:103: The entity "nbsp" was referenced, but not declared.

Я не уверен, что здесь делать.

Я изучил его и получил некоторую информацию о EntityResolver с помощью Google, но все это очень запутанно.

Мне нужно, чтобы сущность рассматривалась как обычный текст. Логически, как обычный текст, они равны.

Я пытался переключиться со следующими параметрами:

        XMLUnit.setExpandEntityReferences(false);  //tried true, false
        XMLUnit.setIgnoreDiffBetweenTextAndCDATA(false);  //tried true, false

Ничего не работает. Пожалуйста, помогите, я полностью потерян. Спасибо!

1 Ответ

0 голосов
/ 07 февраля 2012

Похоже, что есть разница между символьными объектами () и числовыми объектами ().

XMLUnit не имеет проблем с числовыми объектами в отличие от символьных объектов.

Я думаю, чтопростая процедура символьная-сущность-числовая-сущность должна быть достаточной для решения моей проблемы.

...