如何告诉ElementTree忽略XML文件中的名称空间?在
例如,我更喜欢查询modelVersion
(如语句1所示),而不是{http://maven.apache.org/POM/4.0.0}modelVersion
(如语句2所示)。在
pom="""
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
</project>
"""
from xml.etree import ElementTree
ElementTree.register_namespace("","http://maven.apache.org/POM/4.0.0")
root = ElementTree.fromstring(pom)
print 1,root.findall('modelVersion')
print 2,root.findall('{http://maven.apache.org/POM/4.0.0}modelVersion')
1 []
2 [<Element '{http://maven.apache.org/POM/4.0.0}modelVersion' at 0x1006bff10>]
似乎没有直接的路径,因此我只简单地将find调用包装起来,例如
输出:
^{pr2}$这是我目前正在做的,这让我非常自信有更好的方法。在
另一种方法不是忽略,而是删除树中的名称空间,因此没有必要因为它们不存在而“忽略”—请参见nonagon对这个问题的回答(以及我对该问题的扩展,将名称空间包含在属性上):Python ElementTree module: How to ignore the namespace of XML files to locate matching element when using the method "find", "findall"
相关问题 更多 >
编程相关推荐