我正在尝试将声称是 XML 文档的内容加载到任何类型的 .net XML 对象中:XElement
、XmlDocument
或 XmlTextReader
。他们都抛出异常:
Name cannot begin with the '0' character, hexadecimal value 0x30
与一点“XML”相关的错误
<chart_value
color="ff4400"
alpha="100"
size="12"
position="cursor"
decimal_char="."
0=""
/>
我认为问题在于作者不应该将属性命名为 0
。
如果我可以更改它,我会的,但我无法控制此 Feed。我想那些使用它的人正在使用更宽松的工具。无论如何我可以将其作为 XML 加载而不会引发错误吗?
既没有 XML 声明,也没有命名空间或契约定义。我在想我可能必须将它变成一个字符串并进行替换,但这不是很优雅。想知道是否还有其他选择。
最佳答案
正如许多人所说,这不是 XML。
话虽如此,它几乎是 XML 并且想成为 XML,所以我认为您不应该使用正则表达式来破坏它的内部 (here's why) .
无论您在何处获取流,都转储到字符串中,将 0=
更改为 zero=
之类的内容,然后尝试解析它。
如果您必须返回给发件人,请不要忘记撤消操作。
如果你正在从一个文件中读取,你可以这样做:
var txt = File.ReadAllText(@"\path\to\wannabe.xml");
var clean = txt.Replace("0=", "zero=");
var doc = new XmlDocument();
doc.LoadXml(clean);
这不能保证消除所有潜在的 XML 问题——但它应该会消除您遇到的问题。
关于c# - 加载 XML 文档 - 名称不能以零字符开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7674600/