我有这个问题..我正在从客户端接收数据。使用套接字连接。但这并不重要。所有数据都使用XDocument对象存储在XML文件中。 有时在调用XDocument.Save(文件流)并向其传递具有特定字符或符号的数据时,我得到一个异常(无效的十六进制字符),这意味着XML文件不能有一些特殊字符? 如果是这样,我在哪里可以找到可以生成此类异常的特殊字符列表?
答案 0 :(得分:4)
[0x0-0x1F]范围内的字符称为控制字符,不包括0x9,0xA,0xD,它们不能用于XML。
的引用[定义:解析后的实体包含文本,一系列字符, 这可能代表标记或字符数据。] [定义:A character是ISO / IEC 10646:2000规定的文本原子单位 [ISO / IEC 10646]。合法字符是制表符,回车符,换行符, 以及Unicode和ISO / IEC 10646的法律特征 A.1规范性参考文献中引用的这些标准是最新的 这份文件的编写时间。可以在这些字符中添加新字符 修订标准或新版本。因此,XML处理器 必须接受为Char指定的范围内的任何字符。 ]
角色范围
Char :: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] / *任何Unicode字符, 排除代理块,FFFE和FFFF。 * /
答案 1 :(得分:1)
@Darin给出的答案应该让你指出正确的方向。我将补充一点,如果你有一个xml开发工具,如XMLSpy或Stylus Studio,你可以快速确定有问题的字符。如果您没有这样的工具,可以使用WC3学校的在线xml验证器:
http://www.w3schools.com/xml/xml_validator.asp
这将检查xml是否格式正确,如果它包含无效字符,它将无法很好地形成。
更不可能的情况可能是xml文档指定的编码确实允许导致问题的字符。如果文档被指定为UTF-8(可能是它),那么这可能不是问题。