Как часть базового класса для некоторого расширенного модульного тестирования, я пишу вспомогательную функцию, которая рекурсивно сравнивает узлы одного объекта XmlDocument с другим в C # (.NET). Некоторые требования этого:
- Первым документом является источник , например как я хочу, чтобы XML-документ выглядел. Таким образом, второй - это тот, в котором я хочу найти различия, и он не должен содержать лишних узлов, отсутствующих в первом документе.
- Должен выдать исключение, если обнаружено слишком много существенных различий, и это должно быть легко понято человеком, взглянувшим на описание.
- Важен порядок дочерних элементов, атрибуты могут быть в любом порядке.
- Некоторые атрибуты игнорируются; в частности
xsi:schemaLocation
и xmlns:xsi
, хотя я бы хотел указать, какие из них.
- Префиксы для пространств имен должны совпадать как по атрибутам, так и по элементам.
- Пробел между элементами не имеет значения.
- Элементы будут либо иметь дочерние элементы или
InnerText
, но не оба.
Пока я что-то записываю: кто-нибудь написал такой код и можно ли поделиться им здесь?
Кроме того, как бы вы назвали первый и второй документы? Я называю их «источником» и «целью», но это неправильно, поскольку source - это то, что я хочу, чтобы target выглядело как-то иначе, иначе я выбрасываю исключение .