python - XML 解析问题,某些孟加拉语字符在 Python ElementTree 中显示 ParseError

标签 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 文件行(针对“ৎ”字符):

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

如何解析这些字符?

最佳答案

看起来 XML 解析器尚未更新以反射(reflect) 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 第四版勘误表中“XML 名称建议(非规范)”部分中的“基本原理”( https://www.w3.org/XML/xml-V10-4e-errata )。

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

关于python - XML 解析问题,某些孟加拉语字符在 Python ElementTree 中显示 ParseError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54447281/

相关文章:

xml - Groovy XmlSlurper 访问根节点中的属性值

xml - 如何确定 XMLNode 在 XML 文档中的位置?

java - 使用 sax、stax 或 DOM 将 XML 转换为 java 中的数据结构

python - 如何使用 pytest 在 Django 中测试重定向?

python - 如何对双击按键进行编程以使非修饰键在程序中的行为类似于修饰键?

python - 嵌套 if 循环在 python 中未触发

java - 如何解析xml并获取特定元素的内容

python - 将条件语句的输出写入嵌套循环 python 中的文件

python - python 编辑特定节点的 libxml2

javascript - 文档开头不允许使用 XML