我想只比较两个xml文件的节点,而不是使用c#比较节点的值。 如果两个文件中的节点格式不同,则应弹出一条消息..
答案 0 :(得分:0)
我将使用Linq to XML:
XDocument doc = XDocument.Parse(data);
var list = doc.DescendantNodes()。其中(i => i是XElement);
然后用它来比较:
foreach(列表中的var项目)
{
if(((XElement)item).Name.LocalName == property.Name)
}
但您的最终实施应该检查节点数和其他问题
答案 1 :(得分:0)
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");
希望这会有所帮助......
答案 2 :(得分:0)
假设“节点格式”是指元素&他们的名字,这将走元素树并比较名称:
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(); }
}