XDocument не может загрузить XML с версией 1.1 в C # LINQ? - PullRequest
9 голосов
/ 27 мая 2009

XDocument.Load выдает исключение при использовании XML-файла с версией 1.1 вместо 1.0:

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

Есть ли чистые решения для устранения ошибки (без регулярных выражений) и загрузки документа?

Ответы [ 2 ]

5 голосов
/ 27 мая 2009

«Версия 1.0» жестко закодирована в различных местах в стандартных библиотеках .NET XML. Например, кажется, что ваш код не соответствует этой строке в System.Xml.XmlTextReaderImpl.ParseXmlDeclaration (bool):

 if (!XmlConvert.StrEqual(this.ps.chars, this.ps.charPos, charPos - this.ps.charPos, "1.0"))

У меня была похожая проблема с XDocument.Save отказывается сохранять 1.1. Это был тот же тип вещей - жестко закодированный «1.0» в методе System.Xml.

Я так и не смог найти вокруг него все еще используемые стандартные библиотеки.

5 голосов
/ 27 мая 2009

Начальная реакция, просто чтобы подтвердить, что я могу воспроизвести это:

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);
    }
}

Результаты в этом исключении:

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)

Начиная с .NET 4.6 он все еще не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...