我只想比较两个xml文件的节点,而不是使用c#比较节点的值。如果两个文件中的节点格式不同,那么它应该弹出一条消息。
我将使用 Linq 到 XML:
XDocument doc = XDocument.Parse(data);
变量列表 = 文档。DescendantNodes()。其中(i => i 是 XElement);
然后使用它来比较:
foreach (列表中的变量项)
{
if (((XElement)item).Name.LocalName == propert.名称)
}
但是您的最终实现应该检查节点数和其他问题
XDocument file1 = XDocument.Load("somefile1.xml");
XDocument file2 = XDocument.Load("somefile2.xml");
if (file1.Nodes().Intersect(file2.Nodes()).Count() > 0)
MessageBox.Show("hey i popped up");
希望这有帮助...
假设"节点格式"是指元素及其名称,这将遍历元素树并比较名称:
void Main()
{
XElement thing = new XElement("test", new XElement("child") );
XElement otherThing = new XElement("test", new XElement("child") );
var comparer = new XElementComparer();
var areSame = comparer.Equals(thing, otherThing);
Console.WriteLine(areSame);
}
class XElementComparer : IEqualityComparer<XElement>
{
public bool Equals(XElement first, XElement second)
{
if (first.Name != second.Name)
return false;
else if (!first.Elements().SequenceEqual(second.Elements(), this))
return false;
else
return true;
}
public int GetHashCode(XElement element) { return element.GetHashCode(); }
}