我有需要解析的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
答案 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
的非名称空间限定名。