.Net 4.5是否支持XML 1.1(对于XML 1.0中的字符无效)?

Ric*_*iwi 25 .net xml web-services xml-1.1 .net-4.5

这是在Web服务(客户端)的上下文中.我需要与后端系统(Java)连接,并且需要在范围内传输一些控制字符.

我很清楚XML 1.0不支持这一点,但我很想知道.NET 4平台或.NET 4.5 Web服务框架是否支持XML 1.1中的对话.

Jon*_*eet 31

不,它看起来不像XmlReader(.NET中大部分XML支持的核心)支持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());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Unhandled Exception: System.Xml.XmlException: Version number '1.1' is invalid.
Line 1, position 16.
Run Code Online (Sandbox Code Playgroud)

我看了XmlReaderSettings看是否有任何帮助,但我认为没有.基本上我认为你现在被困住了:(

编辑:阅读XML 1.1,看起来它没有被广泛部署或推荐,所以我并不特别感到惊讶,它在.NET 4.5中不受支持.我的猜测是它永远不会,因为它不是一个特别新的推荐.最新版本是第二版,可以追溯到2006年.如果它在7年后不被支持,我怀疑必须有一些重要的事件,以使其在未来值得支持.


I4V*_*I4V 10

我相信这不是最好的选择但是如果你下载了IKVM,你可以在引用一些程序集之后在你的.Net代码中使用java类(真的.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();
Run Code Online (Sandbox Code Playgroud)

XML文件:

<?xml version="1.1" ?>
<root>
    <controlcharacters>&#14;&#15;</controlcharacters>
</root>
Run Code Online (Sandbox Code Playgroud)