【问题标题】:Building not valid XML Document (Name cannot begin with the '0' character) [duplicate]构建无效的 XML 文档(名称不能以“0”字符开头)[重复]
【发布时间】:2022-01-01 11:20:32
【问题描述】:

我正在尝试在 C# 中解码自定义 xml 配置文件,但我无法从解码步骤后获得的字符串创建此文件。

在尝试构建 xml 后,我得到了这个错误:

System.Xml.XmlException:“名称不能以“0”字符开头,十六进制值 0x30。第 1 行,位置 2。'

我知道我的 xml 不是有效的 xml 文件,因为它的格式不正确,但我想知道是否有办法构建它。

“xml文件”的格式:

<01_config.xml>
  <name dataType="String">some_name</name>
  <description dataType="String">some_description</description>
</01_config.xml>

如果我在调试期间将01_config.xml 替换为config,一切都会正常工作,因为它将成为一个有效的xml 文件。但这不是我配置的好格式。

我想我仍然可以在不使用 C# Xml 构建工具的情况下构建文件,但我想知道是否可以首先使用它。

【问题讨论】:

  • 能分享一下引发异常的代码吗?
  • XmlDocument xDoc = new XmlDocument(); xDoc.LoadXml(xml_string); xml_string 是解码后的 xml 内容的字符串
  • 您可以考虑将该文件名放在一个属性中并执行以下操作:&lt;file name="01_config.xml"&gt;
  • 我需要保持原来的格式。这就是整个问题。一种方法是创建一个真正的 xml 文件,然后对其进行编辑。但这有点难看,我想知道是否有更清晰的方法来做到这一点。
  • 不,整个问题是您拒绝接受多方试图向您解释的内容:您的问题基于一个根本缺陷:您没有 XML,但您想使用 XML工具/技术。 (1) 将您的数据修复为 XML,或者 (2) 放弃 XML 工具/技术并为您的自定义语言编写自定义解析器/处理库。你不能两全其美。你标记了你的问题xmlxml-parsing。如果您选择#2,请删除这些并发布文本级 C# 代码尝试;如果您拒绝 #1,它们将不适用。

标签: c# xml xml-parsing


【解决方案1】:

XML 组件(元素和属性)名称不能以数字开头。

严格来说,这是作为 XML 文档的规则问题 - well-formedness, not validity

纠正此错误的原因

  1. 您希望文档是 XML。
  2. 您希望文档的用户能够使用 XML 生态系统,其中包括编辑器、解析器、验证器、数据库、转换/选择语言以及多种语言可用的库。
  3. 您希望获得使用标准的互操作性优势。
  4. 您想加入一个用户社区——利用并贡献于一个集体的知识体系,以实现社区的互惠互利。

使用错误“XML”的原因

  1. 您喜欢“XML”变体的美感,因为它是“我的配置的好格式”。

推荐

修正错误并使用标准 XML。

另见

【讨论】:

  • 我完全理解,但是这些配置文件在另一个理解它们的程序中是这样使用的。因此,遗憾的是,我无法选择使用标准 XML。
  • 还有哪些其他程序犯了您希望延续的错误?
  • 这是一个旧的私人软件,但正如我所说,这不是重点。我只想将此字符串转换为自定义 XML 文件。如果我不能使用 C# 库,我想我必须自己构建一个。这不是关于永久化的东西,如果我有其他选择,我很乐意接受:)
  • 那么你已经到达impasse
【解决方案2】:

我知道我的 xml 不是有效的 xml 文件,因为它的格式不正确,但我想知道是否有办法构建它。

当然,您可以构建格式不正确的 XML 文件,但是您将无法使用 XML 工具读取它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多