繁体   English   中英

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

[英]Name cannot begin with the '1' character, hexadecimal value 0x31. Line 2, position 2

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

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

XML标记就像这样开始。

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

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

我该如何解决这个问题?

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

XML命名规则

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM