Search code examples
c#xmllinqlinq-to-xml

XDocument can't load xml with version 1.1 in C# LINQ?


XDocument.Load throws an exception when using an XML file with version 1.1 instead of 1.0:

Unhandled Exception: System.Xml.XmlException: Version number '1.1' is invalid. Line 1, position 16.

Any clean solutions to resolve the error (without regex) and load the document?


Solution

  • Initial reaction, just to confirm that I can reproduce this:

    using System;
    using System.Xml.Linq;
    
    class Test
    {   
        static void Main(string[] args)
        {
            string xml = "<?xml version=\"1.1\" ?><root><sub /></root>";
            XDocument doc = XDocument.Parse(xml);
            Console.WriteLine(doc);
        }
    }
    

    Results in this exception:

    Unhandled Exception: System.Xml.XmlException: Version number '1.1' is invalid. Line 1, position 16.
       at System.Xml.XmlTextReaderImpl.Throw(Exception e)
       at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
       at System.Xml.XmlTextReaderImpl.ParseXmlDeclaration(Boolean isTextDecl)
       at System.Xml.XmlTextReaderImpl.Read()
       at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
       at System.Xml.Linq.XDocument.Parse(String text, LoadOptions options)
       at System.Xml.Linq.XDocument.Parse(String text)
       at Test.Main(String[] args)
    

    It's still failing as of .NET 4.6.