Игнорировать те элементы, которые закомментированы в одном файле xml с помощью xmlunit

Я хочу сравнить два файла XML. Я использую XMLUnit для сравнения. У меня возникла проблема при сравнении следующих фрагментов xml.

Ожидал:

<Detail>
    <Participant>
        <PersonalInfo>
        <SSN>405018111</SSN>
        <!--<Title>MR</Title>-->
    </PersonalInfo>
    <!--<PersonalDemo>
        <Email>[email protected]</Email>
        <EDeliveryFlag>true</EDeliveryFlag>
    </PersonalDemo>-->
</Detail>

ДЕЙСТВИТЕЛЬНЫЙ:

<Detail>
    <Participant>
        <PersonalInfo>
        <SSN>405018111</SSN>
        <Title>MR</Title>
    </PersonalInfo>
    <PersonalDemo>
        <Email>[email protected]</Email>
        <EDeliveryFlag>false</EDeliveryFlag>
    </PersonalDemo>
</Detail>
  1. Это не удастся, потому что тег «Название» отсутствует (потому что он закомментирован) в ОЖИДАЕМОМ, в то время как он присутствует в АКТУАЛЬНОМ
  2. Это не удастся, потому что тег «PersonalDemo» отсутствует (потому что он закомментирован) в ОЖИДАЕМОМ, хотя он присутствует в АКТУАЛЬНОМ
  3. Это не удастся, потому что «PPSDetails» имеет разное количество дочерних узлов (поскольку закомментированные узлы не учитываются) в ОЖИДАЕМОМ и АКТУАЛЬНОМ

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

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


person Muhammad Ijaz    schedule 24.03.2014    source источник
comment
Что обеспечивает соблюдение требований к этим элементам? Если это DTD или схема, вы можете выполнять синтаксический анализ без проверки. Если это ваше приложение, вам придется согласовать это с приложением и/или заполнить фиктивные значения.   -  person keshlam    schedule 24.03.2014
comment
На самом деле ФАКТИЧЕСКОЕ генерируется нашим приложением. Закомментированная часть в EXPECTED отличается каждый раз в ACTUAL, когда она генерируется. Вот почему я не хочу сравнивать закомментированную часть   -  person Muhammad Ijaz    schedule 24.03.2014


Ответы (1)


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

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

DOM parser
SAX PArser

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

ИЗМЕНИТЬ

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

person Imran    schedule 24.03.2014
comment
Я не могу удалить теги из АКТУАЛЬНОГО, потому что он генерируется системой - person Muhammad Ijaz; 24.03.2014
comment
Я считаю, что вам нужно написать оболочку для XMLUint. Который будет принимать ввод XML после удаления игнорируемых тегов (задача Wrapper), а остальные функции такие же. - person Imran; 24.03.2014