Сравнение двух XML-файлов для конкретных элементов - в Java - PullRequest
0 голосов
/ 15 июня 2011

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

Итаквот что мне нужно:

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

Визуальное представление:

шаблон

<root attribute="asd">
    <a />
    <b>
        <c asdf="fdsa" />
    </b>
</root>

прочее xml

<root>
    <a d="wer" />
    <b>
        <c />
    <b>
    <d />
</root>

окончательный результат:

<root attribute="asd">
    <a d="wer" />
    <b>
        <c asdf="fdsa" />
    </b>
    <d />
</root>

Мой вопрос:

Есть ли способ достичь этого конечного результата без тщательного изучения всех ключевых элементов и проверки их существования?Я заглянул в XPath, и это пока что мое лучшее решение: просто проверить, есть ли необходимые детали, а затем добавить их, если их нет (я буду делать новый файл, поэтому пишу в новомэлементы не очень хлопотно).Однако, поскольку есть много вещей, которые я должен проверить, я бы предпочел не делать этого.Я также посмотрел на XMLUnit и XOM, но они, кажется, лучше подходят для сравнения и объяснения различий (в том числе, где были добавлены дополнительные строки, которые меня не интересуют).

Итак, любая отличная идеяреализовать две строки кода и сделать это просто волшебным образом?Потому что это было бы здорово :) 1022 *

1 Ответ

2 голосов
/ 15 июня 2011

Вы должны быть в состоянии сделать это с помощью XSLT, я бы подумал. Не две строки кода - вообще никакого кода, просто подходящее определение эвристики слияния в вашем файле XSLT.

См. Аналогичный вопрос, обсужденный и решенный здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...