我正在尝试比较两个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,但它也会返回是否有任何差异。但不是什么区别。
感谢任何帮助
答案 0 :(得分:0)
Set-ExecutionPolicy
方法仅返回Compare
或true
,但是,通过查看文档,差异将作为XML文档写入diffgram writer(用于XML补丁)。因此,您始终可以解释该文档并以您希望的方式显示更改。