Объединение XML-документов

Все решения, с которыми я столкнулся относительно слияния XML-документы не достигают того, чего я хочу. Позвольте мне пояснить:

XML-документ 1:

<?xml version="1.0" encoding="utf-8" ?>
<a>
    <b title="Original Section">
        <b title="Original Child Section"></b>
        <b title="Original Child Section 2"></b>
    </b>
</a>

XML-документ 2:

<?xml version="1.0" encoding="utf-8" ?>
<a>
    <b title="New Section">
        <b title="New Child Section"></b>
    </b>
    <b title="Original Section">
        <b title="Original Child Section">
            <b title="New Child For Old Section"></b>
        </b>
    </b>    
</a>

В окончательном документе, например:

<?xml version="1.0" encoding="utf-8" ?>
<a>
    <b title="Original Section">
        <b title="Original Child Section">
            <b title="New Child For Old Section"></b>
        </b>
        <b title="Original Child Section 2"></b>
    </b>    
    <b title="New Section">
        <b title="New Child Section"></b>
    </b>
</a>

Документы похожи по содержанию, но могут иметь произвольное количество дочерних узлов. Еще хотелось бы удалить дубликаты. Я считаю дубликаты элементами с одинаковыми атрибутами (на основе имени и значения атрибута). Кто-нибудь видел рабочий пример этой реализации? Я могу представить себе, как бы я написал это, используя несколько циклов и небольшую рекурсию, но мне это не кажется лучшим способом достичь того, что я хочу :)

Приветствую и заранее спасибо!

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

Поскольку все согласны с тем, что циклы и рекурсия являются обязательными, какой способ сделать это наиболее элегантным и эффективным? Я полагаю, что еще один фундаментальный вопрос к этой проблеме: как лучше всего сравнивать узлы при итерации?

12
задан nokturnal 11 October 2011 в 21:09
поделиться