数据集 - 无法读取XML 1.1?

4

这个正确吗?我已经把我的DS读取的XML版本从1.0改成了1.1,现在出现了一个错误,说它无法读取这个版本。有没有什么办法可以解决这个问题?

我这样做的原因是为了v1.1的能力,可以考虑单位分隔符等问题。

这是我收到的异常:

An unhandled exception of type 'System.Xml.XmlException' 
occurred in System.Xml.dll

Additional information: Version number '1.1' is invalid. Line 1, position 16.

你能发布实际的异常细节吗? - RQDQ
我也会尝试使用简单的 XmlReader 来读取它。如果 XmlReader 无法读取它,那么其他什么都无法读取了。 - John Saunders
@RQDQ - 已经包含了异常处理。@John,我会尝试一下。谢谢。 - Darren Young
@John,XMlTextReader 可以读取文件,但当我尝试将其放入数据集中时出现问题。 - Darren Young
1个回答

4

XML 1.0解析器可能会或可能不会接受解析版本号与"1.0"不同的文档。您的XML解析器的行为取决于它符合哪个XML 1.0建议的版本。

第一版

W3C XML建议书的第1版和第2版如下:

版本号"1.0"应用于表示符合此规范的版本;如果文档不符合此规范,则使用值"1.0"是错误的。

...

如果处理器收到带有不支持的版本标签的文档,它们可以发出错误信号。

在XML声明中,version的有效值为:

[26]    VersionNum  ::=     ([a-zA-Z0-9_.:] | '-')+

参考:http://www.w3.org/TR/1998/REC-xml-19980210#sec-prolog-dtd

第三版

这在第三版中已有更改。我引用的那段话已被删除,version 的值被固定为 1.0

[26]    VersionNum     ::=      '1.0'

这实际上意味着,XML 1.0解析器应将其他版本号视为错误。
参考:http://www.w3.org/XML/xml-V10-2e-errata#E38 第五版允许解析其他版本,当一个新的变化实际上扭转了先前的变化。增加了两个新段落。
“即使VersionNum匹配任何形式为'1.x'的版本号,XML 1.0文档也不应指定除'1.0'之外的版本号。”
注意:当XML 1.0处理器遇到指定1.x版本号(而非'1.0')的文档时,它将其处理为1.0文档。这意味着XML 1.0处理器将接受1.x文档,前提是它们不使用任何非1.0功能。
现在,version的有效值的格式为1.x
[26]    VersionNum     ::=      '1.' [0-9]+

概述

在使用XML文档时,除了版本号为1.0的版本外,使用其他版本号存在风险,因为解析器可能会拒绝处理它。如果您做出这样的更改,则需要知道该文档只能使用与XML 1.1兼容的工具进行处理(或者使用XML 1.0第5版兼容的工具,但那样您将无法使用任何XML 1.1功能)。

参考文献:http://www.w3.org/XML/xml-V10-4e-errata#E10


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接