Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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_Compare - Fatal编程技术网

C# xml文件比较

C# xml文件比较,c#,xml,compare,C#,Xml,Compare,有没有办法比较C#中的两个XML文件?我只想比较第一个文件和第二个文件的节点。我不想附加丢失的节点 有没有办法做到这一点 以下是我尝试过的: var docA = XDocument.Parse(@"<mind_layout></mind_layout>"); var docB = XDocument.Parse(@"<mind_layout></mind_layout>"); var rootNameA = docA.Root.Name; va

有没有办法比较C#中的两个XML文件?我只想比较第一个文件和第二个文件的节点。我不想附加丢失的节点

有没有办法做到这一点

以下是我尝试过的:

var docA = XDocument.Parse(@"<mind_layout></mind_layout>");
var docB = XDocument.Parse(@"<mind_layout></mind_layout>");

var rootNameA = docA.Root.Name;
var rootNameB = docB.Root.Name;
var equalRootNames = rootNameB.Equals(rootNameA);

var descendantsA = docA.Root.Descendants();
var descendantsB = docB.Root.Descendants();
for (int i = 0; i < descendantsA.Count(); i++)
{
    var descendantA = descendantsA.ElementAt(i);
    var descendantB = descendantsB.ElementAt(i);
    var equalChildNames = descendantA.Name.Equals(descendantB.Name);

    var valueA = descendantA.Value;
    var valueB = descendantA.Value;
    var equalValues = valueA.Equals(valueB);
}
var docA=XDocument.Parse(@“”); var docB=XDocument.Parse(@“”); var rootNameA=docA.Root.Name; var rootNameB=docB.Root.Name; var equalRootNames=rootNameB.Equals(rootNameA); var-degenantsa=docA.Root.subgenders(); var-degenantsb=docB.Root.subgenders(); 对于(int i=0;i
其中
是两个文件中的根节点。

如果您只想比较文件内容(例如,包括缩进),可以执行以下操作:

if (File.ReadAllText(@"C:\path\to\file1.xml") == File.ReadAllText(@"C:\path\to\file2.xml"))
{
    // Same TEXT content
}
(警告:这不是您可以执行的最优化的检查!)

如果要比较XML内容(无论格式如何),可以执行以下操作:

var doc1 = XDocument.Load(File.OpenRead(@"C:\path\to\file1.xml"));
var doc2 = XDocument.Load(File.OpenRead(@"C:\path\to\file2.xml"));

if (XDocument.DeepEquals(doc1, doc2))
{
    // Same XML content
}

如果只想比较文件内容(例如,包括缩进),可以执行以下操作:

if (File.ReadAllText(@"C:\path\to\file1.xml") == File.ReadAllText(@"C:\path\to\file2.xml"))
{
    // Same TEXT content
}
(警告:这不是您可以执行的最优化的检查!)

如果要比较XML内容(无论格式如何),可以执行以下操作:

var doc1 = XDocument.Load(File.OpenRead(@"C:\path\to\file1.xml"));
var doc2 = XDocument.Load(File.OpenRead(@"C:\path\to\file2.xml"));

if (XDocument.DeepEquals(doc1, doc2))
{
    // Same XML content
}

var doc1=XDocument.Load(File.OpenRead(@“C:\path\to\file1.xml”);var doc2=XDocument.Load(File.OpenRead(@“C:\path\to\file2.xml”);如果(XDocument.DeepEquals(doc1,doc2)){//Same XML content},但这也会比较我不想要的节点的值。.var doc1=XDocument.Load(File.OpenRead(@“C:\path\to\file1.XML”);var doc2=XDocument.Load(File.OpenRead(@“C:\path\to\file2.xml”);如果(XDocument.DeepEquals(doc1,doc2)){//Same XML content},这也会比较我不想要的节点值。我只想比较节点格式。我只想比较节点的名称,而不是节点的内容。var doc1=XDocument.Load(File.OpenRead(@“C:\path\to\file1.XML”);var doc2=XDocument.Load(File.OpenRead(@“C:\path\to\file2.xml”);如果(XDocument.DeepEquals(doc1,doc2)){//Same XML content},但这也会比较我不想要的节点的值。.var doc1=XDocument.Load(File.OpenRead(@“C:\path\to\file1.XML”);var doc2=XDocument.Load(File.OpenRead(@“C:\path\to\file2.xml”);如果(XDocument.DeepEquals(doc1,doc2)){//Same XML content},这也会比较我不想要的节点值。我只想比较节点格式..我只想比较节点的名称,而不是节点的内容。。