C# xml文件比较
我只想比较两个xml文件的节点,而不想使用c#比较节点的值。C# xml文件比较,c#,xml,file,C#,Xml,File,我只想比较两个xml文件的节点,而不想使用c#比较节点的值。 如果两个文件中的节点格式不同,则应弹出一条消息。我将使用Linq to XML: XDocument doc=XDocument.Parse(数据) var list=doc.degenantNodes(),其中(i=>i是XElement) 然后用这个来比较: foreach(列表中的变量项) { if(((XElement)项).Name.LocalName==propert.Name) } 但您的最终实现应该检查节点数和其他问题
如果两个文件中的节点格式不同,则应弹出一条消息。我将使用Linq to XML: XDocument doc=XDocument.Parse(数据) var list=doc.degenantNodes(),其中(i=>i是XElement) 然后用这个来比较: foreach(列表中的变量项) { if(((XElement)项).Name.LocalName==propert.Name)
} 但您的最终实现应该检查节点数和其他问题
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(); }
}
void Main()
{
XElement thing=新XElement(“测试”,新XElement(“子”);
XElement otherThing=新XElement(“测试”,新XElement(“子”);
var comparer=新的XElementComparer();
var areSame=comparer.Equals(thing,otherThing);
Console.WriteLine(AreName);
}
类XElementComparer:IEqualityComparer
{
公共布尔等于(元素第一,元素第二)
{
if(first.Name!=second.Name)
返回false;
else如果(!first.Elements().SequenceEqual(second.Elements(),this))
返回false;
其他的
返回true;
}
public int GetHashCode(XElement元素){return元素。GetHashCode();}
}
它正在获取整个元素数据,但它不会将文件与元素名称进行比较,而是比较整个元素数据。。