Поддерживает ли.Net 4.5 XML 1.1 (для недопустимых символов в XML 1.0)?

Это в контексте веб-сервисов (клиентская часть). Мне нужно взаимодействовать с серверной системой (Java), и это требование для передачи некоторых управляющих символов в  а также  спектр.

Мне хорошо известно, что XML 1.0 не поддерживает это, но мне интересно узнать, поддерживают ли платформа.NET 4 или платформа веб-служб.NET 4.5 диалоги в XML 1.1.

2 ответа

Решение

Нет не похоже XmlReader (ядро большей части поддержки XML в.NET) поддерживает 1.1:

using System;
using System.IO;
using System.Xml;

class Program
{
    static void Main(string[] args)
    {
        string xml = "<?xml version=\"1.1\" ?><tag>&#x1</tag>";
        var reader = XmlReader.Create(new StringReader(xml));
        while (reader.Read());
    }
}

Выход:

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

Я смотрел на XmlReaderSettings чтобы увидеть, поможет ли что-нибудь там, но я не думаю, что это поможет. В основном я думаю, что вы застряли на данный момент:(

РЕДАКТИРОВАТЬ: немного читая XML 1.1, похоже, что он не широко развернут или рекомендован, поэтому я не особенно удивлен, что он не поддерживается в.NET 4.5. Я предполагаю, что это никогда не будет, учитывая, что это не особенно новая рекомендация. Самая последняя версия - это второе издание, которое датируется 2006 годом. Если оно не будет поддержано 7 лет спустя, я подозреваю, что должно произойти какое-то значительное событие, чтобы оно стоило поддерживать в будущем.

Я уверен, что это не лучший вариант, но если вы загружаете IKVM, вы можете использовать java-классы в вашем.Net-коде после ссылки на несколько сборок (действительно.Net-код:))

var fXmlFile = new java.io.File(xmlfile);

var dbFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
var dBuilder = dbFactory.newDocumentBuilder();

var doc = dBuilder.parse(fXmlFile);
var nList = doc.getElementsByTagName("controlcharacters");

var chars = nList.item(0).getTextContent().ToCharArray();

XML-файл:

<?xml version="1.1" ?>
<root>
    <controlcharacters>&#14;&#15;</controlcharacters>
</root>
Другие вопросы по тегам