Игнорировать те элементы, которые закомментированы в одном файле 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>
  1. Это потерпит неудачу, потому что тег "Заголовок" отсутствует (потому что он закомментирован) в ОЖИДАННОМ, пока он присутствует в АКТУАЛЬНО
  2. Это не удастся, потому что тег "PersonalDemo" отсутствует (потому что он закомментирован) в EXPECTED, пока он присутствует в ACTUAL
  3. Это потерпит неудачу, потому что "PPSDetails" имеет различное количество дочерних узлов (потому что закомментированные узлы не учитываются) в ОЖИДАННОМ и В АКТУАЛЬНОМ

Что мне действительно нужно, так это то, что я хочу игнорировать те элементы в фактическом, которые закомментированы в ОЖИДАЕМОМ

любая помощь, пожалуйста

1 ответ

Решение

Я предлагаю вам написать собственный синтаксический анализатор XML, чтобы он мог видеть теги, которые вы хотите игнорировать. В этой задаче вы просто удаляете игнорируемые теги из ожидаемого и фактического XML и сопоставляете другие теги для проверки или сравнения.

Я думаю, что у вас есть два варианта, либо используйте один из них между двумя парсерами:

DOM parser
SAX PArser

Я знаю, что это не лучшее решение, поэтому приветствуются и другие мысли...

РЕДАКТИРОВАТЬ

Я считаю, что вам нужно написать обертку на XMLUint, Который будет принимать ввод XML после удаления игнорируемых тегов (Wrapper Задача) и в остальном функционал такой же.

Другие вопросы по тегам