Wednesday, 17 June 2020

xml compare file

public bool CompareXml(string SourceFile, string DestinationFile, string[] SkipValues = null, string DiffFileNameWithPath = null)
        {
            try
            {
                bool bIdentical = false;
                //SourceFile = @"C:\FDMXml\NewFile\100W_CheckEndpointOperation_13_27_38.xml";
                //DestinationFile = @"C:\FDMXml\OldFile\100W_CheckEndpointOperation_13_27_38.xml";
                //SkipValues = XmlSkipValues.XmlSkipValues100W;

                string tempFile1 = @"C:\temp\tempfile1.xml";
                string tempFile2 = @"C:\temp\tempfile2.xml";

                XElement rootFile1 = XElement.Load(SourceFile);
                XElement rootFile2 = XElement.Load(DestinationFile);

                for (int i = 0; i < SkipValues.Length; i++)//only hot fix operations
                {
                    rootFile1.Element(SkipValues[i]).Remove();
                    rootFile2.Element(SkipValues[i]).Remove();
                }
                if (File.Exists(@"C:\temp\tempfile1.xml"))
                    File.Delete(tempFile1);
                if (File.Exists(@"C:\temp\tempfile2.xml"))
                    File.Delete(tempFile2);

                rootFile1.Save(tempFile1);
                rootFile2.Save(tempFile2);

                if (String.IsNullOrEmpty(DiffFileNameWithPath))
                    DiffFileNameWithPath = "Diff";
                string diffPath = @"C:\FDMXml\" + DiffFileNameWithPath + ".xml";
                if (!Directory.Exists(DiffFileNameWithPath))
                    Directory.CreateDirectory(DiffFileNameWithPath);

                StringBuilder differenceStringBuilder = new StringBuilder();

                using (FileStream fs = new FileStream(diffPath, FileMode.Create))
                {
                    XmlWriter diffGramWriter = XmlWriter.Create(fs);
                    //XmlDiff diff = new XmlDiff();
                    XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.IgnoreChildOrder |
                                            XmlDiffOptions.IgnoreNamespaces |
                                            XmlDiffOptions.IgnorePrefixes);
                    bIdentical = xmldiff.Compare(tempFile1, tempFile2, false, diffGramWriter);

                    diffGramWriter.Close();
                }

                File.Delete(tempFile1);
                File.Delete(tempFile2);

                StaticTestData.xmlSourceFileName = string.Empty;
                return bIdentical;
            }
            catch (Exception ex)
            {
                return false;
                //throw;
            }
        }

No comments:

Post a Comment