Сравнение двух строк XML

У меня есть 2 XML-документа следующим образом

XML1:

<root>
<element>
<attributes>
<a>1</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>2</a>
<b>j</b>
<c>m</c>
<attribute>
<attributes>
<a>3</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>4</a>
<b>y</b>
<c>n</c>
<attribute>
<element>
<element2>
</element2>
</root>

**XMl2**:
<root>
<element>
<attributes>
<a>1</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>3</a>
<b>y</b>
<c>n</c>
<attribute>
<attributes>
<a>4</a>
<b>y</b>
<c>n</c>
<attribute>
<element>
<element2>
</element2>
</root>

Я хочу сравнить <attribute> дочерние элементы только когда первый дочерний элемент <a> текст равен как в XML

Например, я хочу сравнить <attribute> где <a> = 3 из XML1 с <attribute> где <a> = 3 из XML2.

В настоящее время я использую код ниже.

Diff myDiff=null;

    DifferenceListener myDifferenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();

    try {
        myDiff = new Diff(expected,actual);
        myDiff.overrideDifferenceListener(myDifferenceListener);
    } catch (SAXException | IOException e) {
        e.printStackTrace();
    }

   DetailedDiff myDiffd = new DetailedDiff(myDiff);
    List<Difference> allDifferences = myDiffd.getAllDifferences();

Это дает мне неправильное сравнение. Если <attribute> где <a> = 3 отсутствует в XML, тогда этот узел и следующий весь узел отображается как несоответствие. Но я хочу только этот узел как несоответствие.

Любая помощь приветствуется.

0 ответов

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