1

我使用 Microsoft 的 XMLDiff Api 比较了两个 Xml 文件。

现在我想解释比较的输出文件并在一些简单的输出中总结它

XML 输出:

<?xml version="1.0" encoding="utf-8"?>
<xd:xmldiff version="1.0" srcDocHash="2653891925157739686" options="IgnoreChildOrder IgnoreNamespaces IgnorePrefixes " fragments="no" xmlns:xd="http://schemas.microsoft.com/xmltools/2002/xmldiff">
  <xd:node match="2">
    <xd:node match="6">
      <xd:node match="1">
        <xd:node match="2">
          <xd:node match="1">
            <xd:change match="@timestamp">8/27/2019 9:40:57 AM</xd:change>
          </xd:node>
        </xd:node>
        <xd:node match="1">
          <xd:node match="1">
            <xd:change match="@timestamp">8/27/2019 9:40:57 AM</xd:change>
          </xd:node>
        </xd:node>
        <xd:node match="3">
          <xd:node match="1">
            <xd:change match="@timestamp">8/27/2019 9:40:57 AM</xd:change>
          </xd:node>
        </xd:node>
        <xd:node match="4">
          <xd:node match="1">
            <xd:change match="@timestamp">8/27/2019 9:40:57 AM</xd:change>
          </xd:node>
        </xd:node>
      </xd:node>
    </xd:node>
    <xd:node match="1">
      <xd:node match="4">
        <xd:node match="1">
          <xd:node match="1">
            <xd:change match="@pageNr">fb5675f0-5178-4187-b878-6135a7e587ad</xd:change>
          </xd:node>
        </xd:node>
      </xd:node>
    </xd:node>
    <xd:node match="4">

现在我想获取 XML 中的所有更改并将它们列在 Collection 中:

我尝试使用 XDocument 并遍历节点,但我不太了解这里的匹配属性。

  XDocument xmlDifffDoc = XDocument.Load(reader);

        var allNodes = xmlDifffDoc.Descendants();

        foreach (XElement e in allNodes)
        {
            if (e.Name.LocalName == "change")
            { ...

我不能使用 XMLDiffView,因为代码在 UnitTest 中运行...

如何生成包含所有更改的节点和更改的列表?

4

1 回答 1

0

xmldiff 输出的文档,特别是它的 Match 属性在这里:https ://documentation.help/Microsoft-XML-Diff/xmldiff_conceptual_029f.htm

注意:我真的不喜欢包含链接,但是这个问题很模糊,在这种情况下这是最好的回答方式,并且可以省去查找这些文档的麻烦。

于 2021-06-12T18:08:42.700 回答