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

时间:2013-06-21 09:19:55

标签: .net xml web-services .net-4.5 xml-1.1

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

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

2 个答案:

答案 0 :(得分:30)

不,它看起来不像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());
    }
}

输出:

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

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

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

答案 1 :(得分:10)

我确信这不是最好的选择但是如果你下载IKVM,你可以在引用一些程序集(真的是.Net代码:)之后在.Net代码中使用java类。)

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>