2

我在 Visual Studio 2008 中将以下文件作为新的 XML 文件编写,它报告以下错误。错误消息是什么以及为什么它被视为错误格式的 XML 文件?

这是 XML 文件和相关的错误消息。

<?xml version="1.0" encoding="utf-8"?>
<Foo>&#x2;</Foo>

Error   1   Character ' ', hexadecimal value 0x2 is illegal in XML documents.   XMLFile1.xml    2   6   Miscellaneous Files

感谢提前,乔治

4

5 回答 5

9

您的问题是对  的引用,它本质上是无法打印的随机二进制数据。这在 XML1.0 中是不允许的(它在 XML 1.1 和更高版本中,但不确定您的 .Net 版本是否允许,即使您更改 XML 版本)。

于 2009-03-30T08:43:56.580 回答
4

我在 Visual Studio 2008 中将以下文件作为新的 XML 文件编写,它报告以下错误。错误消息是什么以及为什么它被视为错误格式的 XML 文件?

根据W3C XML 1.0 Specification,XML 文档中允许的唯一字符&#x20;是制表符 (09)、换行符 (0A) 和回车符 (0D)。

XML 1.1 允许几乎所有字符,不包括 00,但很少实现,不应该依赖于找到 XML 1.1 实现。

即使在 XML 1.1 规范中。据说&#x20;“强烈反对”使用下面现在允许的字符。

于 2009-03-30T13:42:18.030 回答
3

查看XML 1.0 规范

具体见第 2.2 节对 Characters 的定义:

Char ::= #x9 | 
         #xA |
         #xD |
         [#x20-#xD7FF] |
         [#xE000-#xFFFD] |
         [#x10000-#x10FFFF]

以及4.1节中实体引用的定义:

使用字符引用引用的字符必须与 Char 的产生式相匹配。

于 2009-03-30T09:34:48.767 回答
2

0x2 不是可打印字符。

于 2009-03-30T08:40:35.027 回答
2

如果您需要将二进制数据放入 XML 中,请使用 CDATA 部分。 http://www.w3schools.com/XML/xml_cdata.asp

于 2009-03-30T09:01:06.257 回答