Игнорировать те элементы, которые закомментированы в одном файле XML с помощью xmlunit
Я хочу сравнить два файла XML. Я использую XMLUnit для сравнения. У меня возникли некоторые проблемы при сравнении, как следующие фрагменты XML.
Ожидаемое:
<Detail>
<Participant>
<PersonalInfo>
<SSN>405018111</SSN>
<!--<Title>MR</Title>-->
</PersonalInfo>
<!--<PersonalDemo>
<Email>someemail@email.com</Email>
<EDeliveryFlag>true</EDeliveryFlag>
</PersonalDemo>-->
</Detail>
АКТУАЛЬНО:
<Detail>
<Participant>
<PersonalInfo>
<SSN>405018111</SSN>
<Title>MR</Title>
</PersonalInfo>
<PersonalDemo>
<Email>someemail@email.com</Email>
<EDeliveryFlag>false</EDeliveryFlag>
</PersonalDemo>
</Detail>
- Это потерпит неудачу, потому что тег "Заголовок" отсутствует (потому что он закомментирован) в ОЖИДАННОМ, пока он присутствует в АКТУАЛЬНО
- Это не удастся, потому что тег "PersonalDemo" отсутствует (потому что он закомментирован) в EXPECTED, пока он присутствует в ACTUAL
- Это потерпит неудачу, потому что "PPSDetails" имеет различное количество дочерних узлов (потому что закомментированные узлы не учитываются) в ОЖИДАННОМ и В АКТУАЛЬНОМ
Что мне действительно нужно, так это то, что я хочу игнорировать те элементы в фактическом, которые закомментированы в ОЖИДАЕМОМ
любая помощь, пожалуйста
1 ответ
Я предлагаю вам написать собственный синтаксический анализатор XML, чтобы он мог видеть теги, которые вы хотите игнорировать. В этой задаче вы просто удаляете игнорируемые теги из ожидаемого и фактического XML и сопоставляете другие теги для проверки или сравнения.
Я думаю, что у вас есть два варианта, либо используйте один из них между двумя парсерами:
DOM parser
SAX PArser
Я знаю, что это не лучшее решение, поэтому приветствуются и другие мысли...
РЕДАКТИРОВАТЬ
Я считаю, что вам нужно написать обертку на XMLUint
, Который будет принимать ввод XML после удаления игнорируемых тегов (Wrapper
Задача) и в остальном функционал такой же.