Wednesday, April 20, 2011

How to determine if XML is well formed?

I've got a large xml document in a string. What's the best way to determine if the xml is well formed?

From stackoverflow
  • Simply run it through a parser. That will perform the appropriate checks (whether it parses ok).

    If it's a large document (as indicated) then an event-based parser (e.g. SAX) will be appropriate since it won't store the document in memory.

    It's often useful to have XML utilities around to check this sort of stuff. I use XMLStarlet, which is a command-line set of tools for XML checking/manipulation.

  • XmlReader seems a good choice as it should stream the data (not load the whole xml in one go)

    http://msdn.microsoft.com/en-us/library/9d83k261.aspx

  • Have a look at how-to-deal-with-xml-in-c, which might help you.

  • Try using an XmlReader with an XmlReaderSettings that has ConformanceLevel.Document set.

  • Something like:

        static void Main() {
            Test("<abc><def/></abc>");
            Test("<abc><def/><abc>");
        }
        static void Test(string xml) {
            using (XmlReader xr = XmlReader.Create(
                    new StringReader(xml))) {
                try {
                    while (xr.Read()) { }
                    Console.WriteLine("Pass");
                } catch (Exception ex) {
                    Console.WriteLine("Fail: " + ex.Message);
                }
            }
        }
    

    If you need to check against an xsd, then use XmlReaderSettings.

  • Save it to an .xml file and open it in Internet Explorer :)

  • check this out

0 comments:

Post a Comment