XML解析问题,一些孟加拉字符在Python ElementTree中显示ParseError

时间:2019-01-30 18:32:31

标签: python xml xml-parsing 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文件的行(用于'ৎ'字符):

<অসৎকে>অসৎ</অসৎকে>

如何解析此字符?

1 个答案:

答案 0 :(得分:2)

似乎XML解析器尚未更新以反映XML 1.0(第五版)中有关元素名称,属性等中允许的字符的更改。

问题中的XML文档被ElementTree和minidom(使用Expat解析器)拒绝,但被lxml(使用libxml2)接受。

1998年的原始XML 1.0建议中的有效字符规则基于Unicode 2.0。孟加拉字符'ৎ'(U + 09CE)已添加到Unicode 4.1.0(于2005年发布)中。元素名称最初不允许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)的勘误中“ XML名称建议(非规范)”部分中的“合理说明”。

另请参阅https://norman.walsh.name/2008/02/07/xml105e