Python2从xml中提取标签

时间:2014-11-19 17:18:49

标签: python xml elementtree

我有需要解析的xml文档,但我被卡住了,我可能会说很开始。 这是xml文件的一部分。

   <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

我想只打印元素标签。我用这段代码形式python docs来做。 我在python interpreter发出这些命令。

tree = ET.parse('pom.xml')
root = tree.getroot()
root = ET.fromstring(data)
root.tag

root.tag返回此

{http://maven.apache.org/POM/4.0.0}project

预期结果只是

project

1 个答案:

答案 0 :(得分:1)

Python正在以保持声明的名称空间的方式解析XML,因此不会丢失数据,因此预期的结果不仅仅是project:)

您看到的{http://maven.apache.org/POM/4.0.0}project是标记的名称空间限定名称。

即使标记start <project不包含名称空间前缀,紧随其后的xmlns="http://maven.apache.org/POM/4.0.0"属性也会声明每个没有显式名称空间前缀的标记都属于该名称空间。

如果您绝对需要非命名空间限定名称,您当然可以tag_name = element.tag.split("}", 1)[-1]。 (由于-1索引,这对于非命名空间限定的名称应该是安全的。)

当然,如果你真的想要的话,你可以递归地遍历一个ElementTree树并用上面的表达式替换所有tag.name的非名称空间限定名。

相关问题