【问题标题】:System.Xml.XmlException occurred. Name cannot begin with the 'G' character, hexadecimal value 0xFF27. Line 44, position 4发生 System.Xml.XmlException。名称不能以“G”字符开头,十六进制值 0xFF27。第 44 行,位置 4
【发布时间】:2011-05-13 19:33:18
【问题描述】:

我编写了一个代码来读取一个包含日文字符的 xml 文件。 为读取 xml 文件而编写的代码是:

        DataSet xmlData = new DataSet();            
        xmlData.ReadXml("c:\\abc.xml");

但在执行此代码时,会发生异常“System.Xml.XmlException”,因为 xml 文件在第 44 行包含英文字符“G”。

显示的错误消息是:="名称不能以 'G' 字符开头,十六进制值 0xFF27。第 44 行,位置 4。"

我该如何解决这个问题?? 下面给出了我的 xml 文件详细信息,包括编码描述。

<?xml version="1.0" encoding="UTF-16" ?>

提前致谢, 比乐。

【问题讨论】:

  • 你能显示 XML,尤其是在第 44 行附近吗?
  • DBNG_Lカテゴリー>这是第44行的内容
  • 在 XML 标记名称中应仅包含 ASCII 字符。

标签: c# xml utf-16


【解决方案1】:

0xFF27 是全角拉丁字母“G”,与拉丁字母“G”不同。您应该使用拉丁字母(在 ASCII 范围内)而不是全角字母(在 FF01-FF5E 范围内)。如果 XML 不是太大,就用英文键盘,一个一个地替换所有的字母。

【讨论】:

    【解决方案2】:

    那是FULLWIDTH LATIN CAPITAL LETTER G,不是普通的字母。

    将其替换为普通的G

    【讨论】:

    • 此 xml 文件由最终用户提供。我们不应该编辑。我们可以通过使用任何其他编码方案来读取它吗?
    • @bjoy:你不能。这是非法的 XML。就像你不能解析&lt;&gt;&lt;/&gt;一样,你也不能解析&lt;G&gt;&lt;/G&gt;
    • @bjoy,你​​说你必须不惜一切代价阅读它,那么你应该滚动你自己的格式解析器,因为你拥有的不是 XML。在 XML 中,标记名称应该只包含 ASCII 字符,任何体面的 XML 解析器都会对此感到窒息。
    猜你喜欢
    • 2012-05-17
    • 2021-06-26
    • 2019-10-25
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多