您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python ElementTree默认名称空间?

Python ElementTree默认名称空间?

没有简单的方法可以透明地处理名称空间。正如您已经提到的,为空名称空间分配非空名称是一种常见的解决方案:

ns = {"mvn":"http://maven.apache.org/POM/4.0.0"}
pom = xml.etree.ElementTree.parse("pom.xml")
print(pom.findall("mvn:version", ns))

请注意,lxml.etree不允许显式使用空名称空间。您将获得:

ValueError:ElementPath不支持名称空间前缀

但是,通过在加载XML输入数据时删除默认的名称空间定义,可以使事情变得更简单:

import xml.etree.ElementTree as ET
import re

with open("pom.xml") as f:
    xmlstring = f.read()

# Remove the default namespace deFinition (xmlns="http://some/namespace")
xmlstring = re.sub(r'\sxmlns="[^"]+"', '', xmlstring, count=1)

pom = ET.fromstring(xmlstring) 
print(pom.findall("version"))
python 2022/1/1 18:29:52 有199人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶