26

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

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

4

2 回答 2

31

不,它看起来不XmlReader支持 1.1(.NET 中大部分 XML 支持的核心):

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 年的第 2 版。如果 7 年后仍不支持,我怀疑将来必须有一些重大事件才能使其值得支持。

于 2013-06-24T15:42:50.920 回答
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();

XML 文件:

<?xml version="1.1" ?>
<root>
    <controlcharacters>&#14;&#15;</controlcharacters>
</root>
于 2013-06-24T19:57:20.777 回答