XML 解析问题,一些孟加拉字符在 Python ElementTree 中显示 ParseError
XML parsing problem, some Bengali character shows ParseError in Python ElementTree
一些孟加拉语字符,例如“ৎ”、“।”当我尝试解析下面的 xml 文件 "temp.xml" 时显示 ParseError:
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<WORD>
<অ>
<অসুখে>অসুখ</অসুখে>
<অসৎকে>অসৎ</অসৎকে>
</অ>
</WORD>
</doc>
使用python解析它:
import xml.etree.ElementTree as ET
trees = ET.parse('temp.xml')
roots = trees.getroot()
给出错误:
File "<string>", line unknown
ParseError: not well-formed (invalid token): line 6, column 11
错误是针对 xml 文件的行('ৎ' 字符):
<অসৎকে>অসৎ</অসৎকে>
如何解析这些字符?
XML 解析器似乎尚未更新以反映 XML 1.0 第五版中有关元素名称、属性等允许字符的更改。
问题中的XML文档被ElementTree和minidom(使用Expat解析器)拒绝,但被lxml(使用libxml2)接受。
1998 年 XML 1.0 建议中的有效字符规则基于 Unicode 2.0。 Unicode 4.1.0(2005 年发布)中添加了孟加拉语字符“ৎ”(U+09CE)。 Unicode 2.0 中未包含的字符最初不允许出现在元素名称中。在 2008 年的 XML 1.0 第五版 (https://www.w3.org/TR/REC-xml/) 中,限制放宽了,几乎可以使用任何字符。
有关详细信息,请参阅 XML 1.0 第四版 (https://www.w3.org/XML/xml-V10-4e-errata) 勘误表 "Suggestions for XML Names (Non-Normative)" 部分中的 "Rationale"。
一些孟加拉语字符,例如“ৎ”、“।”当我尝试解析下面的 xml 文件 "temp.xml" 时显示 ParseError:
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<WORD>
<অ>
<অসুখে>অসুখ</অসুখে>
<অসৎকে>অসৎ</অসৎকে>
</অ>
</WORD>
</doc>
使用python解析它:
import xml.etree.ElementTree as ET
trees = ET.parse('temp.xml')
roots = trees.getroot()
给出错误:
File "<string>", line unknown
ParseError: not well-formed (invalid token): line 6, column 11
错误是针对 xml 文件的行('ৎ' 字符):
<অসৎকে>অসৎ</অসৎকে>
如何解析这些字符?
XML 解析器似乎尚未更新以反映 XML 1.0 第五版中有关元素名称、属性等允许字符的更改。
问题中的XML文档被ElementTree和minidom(使用Expat解析器)拒绝,但被lxml(使用libxml2)接受。
1998 年 XML 1.0 建议中的有效字符规则基于 Unicode 2.0。 Unicode 4.1.0(2005 年发布)中添加了孟加拉语字符“ৎ”(U+09CE)。 Unicode 2.0 中未包含的字符最初不允许出现在元素名称中。在 2008 年的 XML 1.0 第五版 (https://www.w3.org/TR/REC-xml/) 中,限制放宽了,几乎可以使用任何字符。
有关详细信息,请参阅 XML 1.0 第四版 (https://www.w3.org/XML/xml-V10-4e-errata) 勘误表 "Suggestions for XML Names (Non-Normative)" 部分中的 "Rationale"。