一尘不染

您将如何比较两个XML文档?

c#

作为进行大量单元测试的基类的一部分,我正在编写一个辅助函数,该函数以递归方式比较一个XmlDocument对象的节点与C#(.NET)中另一个XmlDocument对象的节点。对此的一些要求:

  • 第一个文档是 ,例如,我想要XML文档的外观。因此,第二个是我要查找差异的节点,它不能包含第一个文档中没有的 多余 节点。
  • 当发现太多显着差异时,必须抛出异常,并且人为查看该描述应该很容易理解。
  • 子元素的顺序很重要,属性可以是任何顺序。
  • 有些属性是可忽略的。特别是xsi:schemaLocationxmlns:xsi,虽然我希望能够通过在哪些。
  • 名称空间的前缀必须在属性和元素中都匹配。
  • 元素之间的空格无关紧要。
  • 元素将 要么 有子元素 InnerText,但不能同时。

当我凑在一起时: 有没有人写过这样的代码,可以在这里共享吗?

顺便说一句,您将如何称呼第一文档和第二文档?我一直将它们称为“源”和“目标”,但感觉不对,因为 是我想要 目标 的外观,否则我抛出异常。


阅读 245

收藏
2020-05-19

共1个答案

一尘不染

Microsoft有您可以使用的XML diff API

非官方的NuGet:https :
//www.nuget.org/packages/XMLDiffPatch。

2020-05-19