c# - 加载 XML 文档 - 名称不能以零字符开头

标签 c# .net xml

我正在尝试将声称是 XML 文档的内容加载到任何类型的 .net XML 对象中:XElementXmlDocumentXmlTextReader。他们都抛出异常:

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/

相关文章:

c# - 如何更改另一个程序的窗口大小?

c# - 如何纠正警告 CS1707?

java - 如何使用 XStream 为同一类元素设置不同的别名

xml - 将 XML 转换为纯文本 - 我应该如何忽略/处理 XSLT 中的空格?

c# - 如何验证一个事件已经被模拟取消订阅

c# - 无法获得准确的文件大小

android - Xamarin 未正确安装

c# - 如何在异步多线程爬虫中锁定回调类?

android - 如何实现 PIN 码屏幕

c# - 为什么在使用 OleDb 导入 Excel 时忽略第一个空行