Python 将默认命名空间与lxml一起使用时缺少属性命名空间

Python 将默认命名空间与lxml一起使用时缺少属性命名空间,python,namespaces,lxml,Python,Namespaces,Lxml,我使用的是v4.4.1 当我解析使用名称空间前缀的MathML文档时(例如xmlns:mml=”http://www.w3.org/1998/Math/MathML“),元素和属性名称的前缀为“{}”,这是正常情况 例1: 从lxml导入etree XML1=“” math=etree.XML(XML1) 打印(math.tag) 打印(math.attrib) # {http://www.w3.org/1998/Math/MathML}数学 # {'{http://www.w3.org/199

我使用的是v4.4.1

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

例1:

从lxml导入etree
XML1=“”
math=etree.XML(XML1)
打印(math.tag)
打印(math.attrib)
# {http://www.w3.org/1998/Math/MathML}数学
# {'{http://www.w3.org/1998/Math/MathML}显示“:”块“}
但是,当我使用默认名称空间时(例如:
xmlns=)http://www.w3.org/1998/Math/MathML“
),属性的前缀不是MathML命名空间

例2:

XML2=“”
math=etree.XML(XML2)
打印(math.tag)
打印(math.attrib)
# {http://www.w3.org/1998/Math/MathML}数学

#{'display':'block'}我不认为这是一个bug。默认命名空间声明(无前缀)不适用于属性名称。这意味着没有前缀的属性不在命名空间中。看,你是对的!我在这里找到了引用:。这真是令人惊讶。它说:非固定属性名称的名称空间名称始终没有值。。