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

时间:2012-05-09 06:43:09

标签: c# xml xmldocument

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

  

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

XML标记就像这样开始。

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

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

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:14)

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

XML命名规则

XML 元素 必须遵循这些命名规则:

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

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

作为解决问题的建议,以保持标准:

  1. 使用属性,即&lt; Number value="1212041205115912"/>
  2. 为标记添加前缀,即<_1212041205115912/>
  3. 当然,您可以通过编写自己的格式解析器来保留您提出的结构,但我可以说这将是一个非常糟糕的主意,因为将来有人可能会扩展格式并且不会乐意看到似乎xml的文件实际上不是,他/她可以get angry for that。此外,如果你想要你的自定义格式,使用更简单的东西,我的意思是:用一些'&lt;'弄乱一个文本文件和'&gt;'如果它不是官方认可的格式,则不添加任何值,最好使用简单的纯文本文件。

答案 1 :(得分:4)

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

由于它是一个无效的xml文档,请在解析之前尝试清理它。 例如。制作一个替代所有&lt;数&GT;标签与&lt; IMessedUp&GT;数&LT; / IMessedUp&GT;然后解析它。

有多种方法可以做到,但我会解决你的问题。

答案 2 :(得分:4)

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