11

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

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

XML 标记的开头是这样的。

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

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

我该如何解决这个问题?

4

3 回答 3

15

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

XML 命名规则

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

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

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

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

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

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

于 2012-05-09T06:45:18.933 回答
4

如果你绝对不能改变它,例如。出于某种原因,该格式已经广泛使用,并被其他系统/客户/其他任何人使用。

由于它是一个无效的 xml 文档,请在解析之前尝试清理它。例如。制作一个正则表达式,用 <IMessedUp>number</IMessedUp> 替换所有 <number> 标签,然后解析它。

有点不确定的方法,但我会解决你的问题。

于 2012-05-09T07:11:44.410 回答
4

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

于 2012-05-09T11:00:19.197 回答