我目前在比较 2 个 xmls 时遇到一个问题 - 原始和差异参考。问题是当我尝试应用通配符与不同的子顺序进行比较时 - 另外,这些子节点在节点中可能具有不同数量的属性,因此比较更加困难。
我尝试使用适用于 .NET 的 XMLUnit 和 XMLDiff 库来实现解决方案,但没有成功。
using System;
using Org.XmlUnit.Builder;
using Org.XmlUnit.Diff;
using System.IO;
static void Main(string[] args)
{
string orgFilePath = @"C:\Temp\original.xml";
string refFilePath = @"C:\Temp\reference.xml";
StreamReader orgStreamReader = new StreamReader(orgFilePath);
StreamReader refStreamReader = new StreamReader(refFilePath);
String orgFile = XDocument.Load(orgStreamReader).ToString();
String refFile = XDocument.Load(refStreamReader).ToString();
var diff = DiffBuilder
.Compare(Input.FromString(orgFile))
.WithTest(Input.FromString(refFile))
.CheckForSimilar()
.Build();
foreach (var d in )
{
Console.WriteLine(d.Comparison);
Console.WriteLine();
}
Console.WriteLine(diff.Differences);
Console.ReadLine();
}
参考文件:
<deviceOrders>
<deviceOrder>
<operation>New</operation>
<moduleId>*</moduleId>
<net>TST</net>
<sort>VT</sort>
<moduleNr>220</moduleNr>
<deviceNr>0</deviceNr>
</deviceOrder>
<deviceOrder>
<operation>New</operation>
<moduleId>*</moduleId>
<net>79ST</net>
<sort>UP</sort>
<deviceNr>0</deviceNr>
</deviceOrder>
</deviceOrders>
.org 文件:
<deviceOrders>
<deviceOrder>
<operation>New</operation>
<moduleId>1235</moduleId>
<net>79ST</net>
<sort>UP</sort>
<deviceNr>0</deviceNr>
</deviceOrder>
<deviceOrder>
<operation>New</operation>
<moduleId>1234</moduleId>
<net>TST</net>
<sort>VT</sort>
<moduleNr>220</moduleNr>
<deviceNr>0</deviceNr>
</deviceOrder>
</deviceOrders>
我还没有找到解决方案,所以请帮助我。