Как сравнить две структуры 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
Перебирая списки полных путей, вы можете быстро проверить и сравнить, существуют ли они в другом дереве. Вы также можете легко найти узлы на дереве.