Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# xml文件比较_C#_Xml_File - Fatal编程技术网

C# xml文件比较

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) } 但您的最终实现应该检查节点数和其他问题

我只想比较两个xml文件的节点,而不想使用c#比较节点的值。
如果两个文件中的节点格式不同,则应弹出一条消息。

我将使用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();}
}

它正在获取整个元素数据,但它不会将文件与元素名称进行比较,而是比较整个元素数据。。