比较两个xml文件并显示差异

时间:2015-05-28 10:49:35

标签: c# .net xml

我正在尝试比较两个xml文件并显示差异(如果找到)。

目前我正在使用XML Diff来找出差异。

方法使用

 private bool CheckDifferences(string originalFile, string newFile, ref string difference)
    {
       var diff = new XmlDiff
       {
           IgnoreComments = true,
           IgnorePI = true,
           IgnoreWhitespace = true,
           Algorithm = XmlDiffAlgorithm.Precise
       };

        var sw = new StringWriter();
        var writer = new XmlTextWriter(sw);
        writer.Formatting = Formatting.Indented;

        var originalReader = new XmlTextReader(new StringReader(originalFile));
        var modifiedReader = new XmlTextReader(new StringReader(newFile));
        var status = diff.Compare(originalReader, modifiedReader, writer);

        difference = sw.ToString();
        writer.Close();
        originalReader.Close();
        modifiedReader.Close();

        return status;
    }

difference仅包含更改,而不包含确切更改的内容。

例如我想要实现的是

xml1 - 原始文件

<catalog>
   <book id="bk11">
      <author>AuthorName1</author>
   </book>
</catalog> 

xml2 - 新文件

<catalog>
   <book id="bk11">
      <author>AuthorName2</author>
   </book>
</catalog> 

所以我想显示作者已更改为AuthorName2等...

xml文件结构未知,但两个文件的结构都相同。

同时查看XNode.DeepEquals,但它也会返回是否有任何差异。但不是什么区别。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

Set-ExecutionPolicy方法仅返回Comparetrue,但是,通过查看文档,差异将作为XML文档写入diffgram writer(用于XML补丁)。因此,您始终可以解释该文档并以您希望的方式显示更改。