【发布时间】:2012-11-22 17:20:47
【问题描述】:
我正在尝试将声称是 XML 文档的内容加载到任何类型的 .net XML 对象中:XElement、XmlDocument 或 XmlTextReader。他们都抛出一个异常:
名称不能以“0”字符开头,十六进制值 0x30
与'XML'有关的错误
<chart_value
color="ff4400"
alpha="100"
size="12"
position="cursor"
decimal_char="."
0=""
/>
我认为问题在于作者不应该将属性命名为0。
如果我可以更改此设置,我会更改,但我无法控制此提要。我想那些使用它的人正在使用更宽松的工具。无论如何我可以将其加载为 XML 而不会引发错误?
也没有 XML 声明,也没有命名空间或合同定义。我在想我可能不得不把它变成一个字符串并做一个替换,但这不是很优雅。想知道是否还有其他选择。
【问题讨论】:
-
XML 解析器总是会阻塞无效的 XML 文档。这可能是手工制作的,或者是使用字符串连接构建的,而不是通过 XML 工具。
-
这确实是一段完全无效的 XML - 所以您需要进行搜索和替换。
-
请原谅我的迂腐编辑。想要明确您的问题的根源是 这不是 XML。
-
加载错误 XML、将其推入字符串并对其执行替换的最佳方法是什么?如果我加载 XMLReader 然后执行 reader.ReadOuterXml() 它仍然会抛出错误
-
因为它仍然不是有效的 XML。 XML 非常严格,有些程序员非常愚蠢——不得不自己处理这种异常情况。这不是 XML,因此 XML 解析器无法工作。而且 XML 对验证基本结构非常严格。