Как сравнить две структуры XML-узлов Delphi

Есть ли способ сравнить два узла XML в Delphi?

Я использую парсер MSXML и загружаю XML в IXmlDOMDocument2. Узлы хранятся в IXmlDOMNode.

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

Я просто хочу сравнить структуры узлов, а не значения.

Я видел похожий пост / утилиту для Java, но ничего для Delphi.

Спасибо!

1 ответ

Поскольку вы хотите сравнить только структуру, вы можете преобразовать ваши узлы в "полные пути" и сравнить их как строки.

Например, давайте предположим, что деревья:

Дерево А

Root -> Node1 -> Child1
              -> Child2
     -> Node2

Дерево Б

Root -> Node1 -> Child1
     -> Node2

Из преобразования в "полные пути" вы получите:

Дерево А

Root
Root\Node1
Root\Node1\Child1
Root\Node1\Child2
Root\Node2

Дерево Б

Root
Root\Node1
Root\Node1\Child1
Root\Node2

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

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