2010-02-14 3 views
3

У меня есть обработчик каталога, который я создал, который обновляет себя, оценивая файл манифеста на основе xml для текущего состояния и сравнивая его с локальным manifest.xml.Существует ли команда .NET XPath «diff» для двух XmlDocuments?

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

Мне было интересно, был ли более оптимизированный XPath или аналогичный способ сделать «diff» на 2 XmlDocuments и вернуть ему все узлы, которые отличаются друг от друга, поэтому я могу их обрабатывать только.

Это приложение .NET 2.0 C#.

Спасибо,

Джон

ответ

0

Там нет дополнительной помощи вы собираетесь получить от XPath. Чтобы добиться такого эффекта, я бы получил приложение для редактирования. Я создал системы, в которых я добавил атрибут узла, указывающий, был ли он обновлен ., добавлен или должен быть удален. Затем я каскадирую дерево, гарантируя, что каждый предок помечен грязный (если уже не отмечено как одно из этих других состояний).

Для публикации изменений XML обрабатывается с помощью XSL, выбирая все узлы с любым таким состоянием. A dirty Узел будет копировать свои атрибуты, но будут выбраны только дети с состоянием. В конечном итоге вы получаете некоторый XML, который содержит только измененные элементы, а состояние указывает, какое изменение должно быть применено. Если требуется управление параллелизмом, я предпочитаю использовать атрибут номера версии.

Смежные вопросы