SO,
我正在使用XMLWriter根据数据集中的值构建XML字符串。
根据我指定的设置和条件正确构建xml字符串。
如果数据集中有超过1000条记录,当我尝试构建xml字符串时,我收到上述错误。十六进制0X19是无效字符
我如何通过这个。我花了大约6个小时试图搞清楚。
请帮忙
答案 0 :(得分:13)
很简单,无论你如何标记,你都不允许在XML文档中使用该字符。引用spec:
Char :: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
粗略翻译,这意味着在0x20之前,你只允许标签(0x09),换行符(0x0a)和回车符(0x0d)。
克服此类问题的常用方法是使用其他嵌入式编码,例如base64。
答案 1 :(得分:1)
Hex 0x19是ASCII sequence中的控制代码 - 它是媒体结束(EM)。我不确定它是如何进入你的数据流的。如果要将需要多个字节的内容编码为UTF-8,然后将其视为单字节字符集或其他类似的编码/解码序列,则可能会看到UTF-8序列的第二个字节。
您是否从一个字符集转码到另一个字符集?什么是输入和输出编码?
答案 2 :(得分:-1)
尝试使用0x19:)
十六进制(基数16)使用16个符号,即0到9和A B C D E F(或a到f,表示10到15)
0x只是编程语言(如C)和shell
中数字常量的前缀答案 3 :(得分:-1)
我发现XML标记和/或属性名称中的无效字符会出现类似的错误。例如,如果在手动构建xml时没有包含空格,
<tagNameattributeName="attributeValue">
会对预期的
产生错误 <tagName attributeName="attributeValue">
可能值得一看。