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

本文关键字:文件 显示 xml 两个 比较 | 更新日期: 2023-09-27 17:51:02

我正在尝试比较两个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,但它也返回是否有差异。但不知道区别是什么。

感谢您的帮助

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

Compare方法只返回truefalse,但是,通过查看文档,差异作为XML文档被写入到diffgram编写器(用于XML Patch)。所以你总是可以解释这个文档并显示你想要的变化