在lxml中使用默认名称空间时缺少属性名称空间

时间:2019-11-20 10:53:04

标签: python namespaces lxml

我正在使用lxml v4.4.1

当我解析使用名称空间前缀(例如xmlns:mml="http://www.w3.org/1998/Math/MathML")的MathML文档时,元素和属性名称都以“ {{http://www.w3.org/1998/Math/MathML}””作为前缀。

示例1:

from lxml import etree

XML1 = """<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" mml:display="block"/>"""
math = etree.XML(XML1)
print(math.tag)
print(math.attrib)
# {http://www.w3.org/1998/Math/MathML}math
# {'{http://www.w3.org/1998/Math/MathML}display': 'block'}

但是,当我使用默认名称空间(例如:xmlns="http://www.w3.org/1998/Math/MathML")时,MathML名称空间没有属性前缀。

示例2:

XML2 = """<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"/>"""
math = etree.XML(XML2)
print(math.tag)
print(math.attrib)
# {http://www.w3.org/1998/Math/MathML}math
# {'display': 'block'}  # <-- WRONG

是错误吗?该如何解决?

0 个答案:

没有答案
相关问题