【问题标题】:XML parsing problem, some Bengali character shows ParseError in Python ElementTreeXML 解析问题,一些孟加拉语字符在 Python ElementTree 中显示 ParseError
【发布时间】:2019-06-24 03:05:41
【问题描述】:

一些孟加拉语字符,例如“ৎ”、“।”当我尝试解析下面的 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 文件的行(对于 'ৎ' 字符):

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

如何解析这些字符?

【问题讨论】:

    标签: python xml xml-parsing elementtree


    【解决方案1】:

    看起来 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) 中“XML 名称建议(非规范)”部分中的“基本原理”。

    另见https://norman.walsh.name/2008/02/07/xml105e。

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多