简体   繁体   中英

Compare XML documents in C#

I am novice to C#, I am looking to compare XML files and get third output.
I have read its possible using 'xmldiff' class.
I could also find below, however I am not sure which C# project type should be used?
Kindly help me to understand which project type shall I select?

I tried with Class library but it gives me error at (XmlDiffOptions.IgnoreChildOrder | XmlDiffOptions.IgnoreNamespaces | XmlDiffOptions.IgnorePrefixes)

Also I dont see the below asking for file location to save.

private void CompareXml(string file1, string file2, string diffFileNameWithPath)
{
    //file1 = "XMLDelta_A.xml";
    //file2 = "XMLDelta_B.xml";

    XmlReader reader1 = XmlReader.Create(@"\\msi-ws60-a0080\Parisa\wetransfer-6f37e5\XML\XMLDelta_A.xml");
    XmlReader reader2 = XmlReader.Create(@"\\msi-ws60-a0080\Parisa\wetransfer-6f37e5\XML\XMLDelta_B.xml");

    StringBuilder differenceStringBuilder = new StringBuilder();

    using (FileStream fs = new FileStream(diffFileNameWithPath, FileMode.Create))
    {
        XmlWriter diffGramWriter = XmlWriter.Create(fs);

        XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.IgnoreChildOrder |
                                XmlDiffOptions.IgnoreNamespaces |
                                XmlDiffOptions.IgnorePrefixes);
        bool bIdentical = xmldiff.Compare(file1, file2, false, diffGramWriter);

        diffGramWriter.Close();
    }

Now it says below

Severity Code Description Project File Line Suppression State Warning NU1701 Package 'XMLDiffPatch 1.0.8.28' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.

Manage to resolve it some arguments were incorrect. Thanks for your help.I used below

XmlReader reader1 = XmlReader.Create(new StringReader(@"\msi-ws60-a0080\Parisa\wetransfer-6f37e5\XML\XMLDelta_A.xml")); XmlReader reader2 = XmlReader.Create(new StringReader(@"\msi-ws60-a0080\Parisa\wetransfer-6f37e5\XML\XMLDelta_B.xml"));

        //StringBuilder differenceStringBuilder = new StringBuilder();
       // using (FileStream fs = new FileStream(diffFileNameWithPath, FileMode.Create))
        {
            XmlWriter diffGramWriter = new XmlTextWriter("diffgram.xml", new System.Text.UnicodeEncoding());
            //XmlWriter.Create(fs);

            XmlDiff xmldiff = new XmlDiff(XmlDiffOptions.IgnoreChildOrder |
                                    XmlDiffOptions.IgnoreNamespaces |
                                    XmlDiffOptions.IgnorePrefixes);
            bool bIdentical = xmldiff.Compare(textBox1.Text, textBox2.Text, false, diffGramWriter);
            diffGramWriter.Flush();
            diffGramWriter.Close();
            //fs.Close();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM