名称不能以“1”字符开头,十六进制值0x31.第 2 行,位置 2

本文关键字:十六进制 0x31 位置 开头 不能 字符 | 更新日期: 2023-09-27 18:33:31

在C#应用程序中加载XML文件时,我得到

名称不能以"1"字符开头,十六进制值0x31。 第 2 行,位置 2。

XML 标记的开头如下所示。

<version="1.0" encoding="us-ascii" standalone="yes" />
<1212041205115912>

我不应该不惜一切代价更改此标签。

我该如何解决这个问题?

名称不能以“1”字符开头,十六进制值0x31.第 2 行,位置 2

您应该更改标记名称,因为您编写的标记名称违反了 xml 标准。只是为了记住这里有趣的部分:

XML 命名规则

XML 元素必须遵循以下命名规则:

  • 名称可以包含字母、数字和其他字符
  • 名称不能以数字或标点字符开头
  • 名称不能以字母 xml 开头(或 XML,或 XML 等(
  • 名称不能包含空格

可以使用任何名称,不保留任何单词。

作为解决标准问题的建议:

  1. 使用属性,即<Number value="1212041205115912"/>>
  2. 为标签添加前缀,即<_1212041205115912/>

当然,您可以通过编写自己的格式解析器来维护您提出的结构,但我可以说这将是一个非常糟糕的主意,因为将来有人可能会扩展格式,并且不会很高兴看到看似 xml 的文件实际上不是,他/她可能会为此生气。此外,如果你想要你的自定义格式,使用更简单的东西,我的意思是:如果文本文件不是官方认可的格式,那么用一些"<"和">"弄乱它不会增加任何价值,最好使用类似简单纯文本文件的东西代替。

如果你绝对不能改变它,例如。 由于某种原因,该格式已经在野外出现并被其他系统/客户/其他系统使用。

由于它是无效的 xml 文档,因此请尝试在解析之前对其进行清理。例如。创建一个正则表达式,将所有<数字>标记替换为number然后对其进行解析。

有点麻烦,但我会解决你的问题。

如果您需要处理此文档,请停止将其视为 XML,并抛弃任何使用 XML 工具处理它的想法。您正在处理专有格式,您需要编写自己的工具来处理它。如果您希望获得使用 XML 技术的好处,则必须重新设计文档,使其成为有效的 XML。