首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML解析错误: UTF-8

XML解析错误: UTF-8
EN

Stack Overflow用户
提问于 2012-05-25 22:09:33
回答 2查看 1.8K关注 0票数 2

我正在尝试将一个XML文件(扩展名为"NDS“)作为数据读入我的Android应用程序。我选择使用DOM解析方法,调用它的DocumentBuilder方法。

问题是其中一个节点名称中存在非ASCII增量(Δ)字符。这会导致解析操作失败,并返回DOMException。当我去掉有问题的行时,它就起作用了。

我使用.NET库方法在Windows下创建的XML文件本身,它的头文件是<?xml version="1.0" encoding="utf-8"?>。(我还注意到此标头前面有3个字节的BOM。)

有问题的行周围的XML层次结构如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<NDS SoftwareIdentity="MicroAnalyzer 2000" SoftwareVersion="3.5.8" WindowsVersion="Microsoft Windows NT 5.1.2600 Service Pack 3" CLRVersion="2.0.50727.3615" MachineName="SYSTEM2000_3033" MachineDescription="" DataSource="System2000_3033\SQLEXPRESS" Date="3/31/2012" Time="11:15 AM">
    <ASME_B46_1_2002DataSet xmlns="http://tempuri.org/ASME_B46_1_2002DataSet.xsd">
        <ASME_B46_1_2002RoughnessInstanceTable>
            <InstanceAppendixId>-1</InstanceAppendixId>
            <RΔaEnabled>false</RΔaEnabled>
        </ASME_B46_1_2002RoughnessInstanceTable>
    </ASME_B46_1_2002DataSet>
</NDS>

您可能认为增量字符在UTF-8下是可接受的,事实上,Internet Explorer可以正确地解释此XML。

EN

回答 2

Stack Overflow用户

发布于 2012-05-25 23:18:24

正在读取http://www.w3.org/TR/REC-xml/#NT-NameChar

代码语言:javascript
复制
[4]     NameStartChar      ::=      ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]


[4a]    NameChar       ::=      NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

有些unicode字符在XML 1.0中是有效的,但不是全部。您的字符(#x394)是在#x37F-#x1FFF范围内的有效NameStartChar。

票数 1
EN

Stack Overflow用户

发布于 2012-05-25 22:47:14

我认为XML1.0要求元素和属性名称只能包含ASCII字符(并且禁止某些非打印的ASCII字符)。声明UTF-8编码允许非ASCII字符出现在元素和属性的值中。

XML1.1放宽了这一限制,允许在元素和属性名称中使用Unicode、非ASCII字符。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10755901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档