所有XML元素标签中的URL

时间:2019-04-15 17:33:53

标签: python xml tags celementtree

我在Python中使用cElementTree包,并且遇到了元素标签的麻烦。它们在标签本身中包含一个属性。解析器似乎有问题。请查看以下代码:

from xml.etree import cElementTree as ET
path='C:\\Users\\myusername\\Desktop\\test.xml'
tree=ET.parse(path)
root=tree.getroot()

root.tag
>>> '{http://www.aftmark.org}DATA'

xml如下所示:

<DATA xmlns:xsd="http://www.w.org/2008/XMLsca" xmlns="http://www.aftmark.org">
  <Header>
    <DATAVersion>6.5</DATAVersion>
  </Header>
  <Items>
    <Item MaintenanceType="A">
      <HazardousMaterialCode>N</HazardousMaterialCode>
      <ExtendedInformation>
    </Item>

您知道为什么要包含网址“ {http://www.aftmark.org}”吗?我正在解析很多文件,并且该URL发生了变化。 DATA标签没有。 (备份是使用root.tag并获取该URL,然后将其附加到所有ET.find()上) 谢谢!

1 个答案:

答案 0 :(得分:1)

这是因为DATA(和所有后代)都位于默认名称空间http://www.aftmark.org中。

您看到的是名称空间uri和本地名称已扩展(又名Clark表示法)。

See here了解有关ElementTree中名称空间的更多信息。

See here,以获取有关XML名称空间的一般信息。

此外,see this answer还提供了另一种捕获未知名称空间的方式,以供在find / findall中使用。