Vérifiez si deux fichiers XML sont identiques en C #?

Comment vérifier si deux fichiers XML sont identiques en C #?

Je veux ignorer les commentaires dans le fichier XML.

Installez le package gratuit XMLDiffMerge de NuGet . Ce paquet est essentiellement une version reconditionnée de l’ outil XML Diff et Patch GUI de Microsoft.

Cette fonction renvoie true si deux fichiers XML sont identiques, en ignorant les commentaires, les espaces et l’ordre des enfants. En prime, il calcule également les différences (voir les differences variables internes dans la fonction).

 ///  /// Compares two XML files to see if they are the same. ///  /// Returns true if two XML files are functionally identical, ignoring comments, white space, and child /// order. public static bool XMLfilesIdentical(ssortingng originalFile, ssortingng finalFile) { var xmldiff = new XmlDiff(); var r1 = XmlReader.Create(new SsortingngReader(originalFile)); var r2 = XmlReader.Create(new SsortingngReader(finalFile)); var sw = new SsortingngWriter(); var xw = new XmlTextWriter(sw) { Formatting = Formatting.Indented }; xmldiff.Options = XmlDiffOptions.IgnorePI | XmlDiffOptions.IgnoreChildOrder | XmlDiffOptions.IgnoreComments | XmlDiffOptions.IgnoreWhitespace; bool areIdentical = xmldiff.Compare(r1, r2, xw); ssortingng differences = sw.ToSsortingng(); return areIdentical; } 

Voici comment nous appelons la fonction:

 ssortingng textLocal = File.ReadAllText(@"C:\file1.xml"); ssortingng textRemote = File.ReadAllText(@"C:\file2.xml"); if (XMLfilesIdentical(textLocal, textRemote) == true) { Console.WriteLine("XML files are functionally identical (ignoring comments).") }