繁体   English   中英

使用 Python 在 XML 文件中查找标签

[英]Finding Tags within an XML file with Python

我在处理 XML 文件的 python 代码中需要一些帮助。 我想获取子标签并将它们存储在列表中并用它们做一些事情。 直到现在我的代码都在工作,因为我认为 XML 结构对于我拥有的每个文件都是相同的。 所以我使用 ElementTree 库进行解析等,然后使用 .findall(tagname) ,之后我对列表做了一些事情。 但后来我意识到有些文件有更多的标签,因此我没有得到我需要的一切。 给你一个思路,

<parent tag (same for every file)>
  <tag1>
    .....
  </tag1>
  <tag2>
    .....
  </tag2>
  <tag3>
    .....
  </tag3>
  <unknown tag1>
    .....
  </unknown tag1>
  <unknown tag2>
    .....
  </unknown tag2>
  <tag2>
    .....
  </tag2>
  <tag2>
    .....
  </tag2>
  <unknown tag1>
    .....
  </unknown tag1>
</parent tag>

所以我目前的代码是:

list1 = root.findall('tag1')
list2 = root.findall('tag2')
list3 = root.findall('tag3')

然后我为那些正在工作的标签中的内容做一些事情。 我需要关于如何检测父标签下的每个标签的帮助,然后将它们存储在列表中,以便我可以为列表中的每个标签执行 findall() 功能。 就像是

List_of_tags = [tag1, tag2, tag3, unknown tag1, etc]

for tag in list_of_tags:

....

先感谢您!

我实际上使用 ElemntTree 解析 xml 文件,如下所示:

try:
    tree = ET.parse(filename)
except IOError as e:
    print 'No such file or directory'
else:
    root = tree.getroot()

您可以使用xmltodict

pip install xmltodict

以下是如何获取父标签下的所有子标签

import xmltodict
my_xml = """<parent_tag>
  <tag1>
    .....
  </tag1>
  <tag2>
    .....
  </tag2>
  <tag3>
    .....
  </tag3>
  <unknown_tag1>
    .....
  </unknown_tag1>
  <unknown_tag2>
    .....
  </unknown_tag2>
  <tag2>
    .....
  </tag2>
  <tag2>
    .....
  </tag2>
  <unknown_tag1>
    .....
  </unknown_tag1>
</parent_tag>"""

xmld = xmltodict.parse(my_xml)

child_tags = xmld['parent_tag'].keys()

for child_tag in child_tags:
    print(child_tag)

输出将如下所示:

tag1
tag2
tag3
unknown_tag1
unknown_tag2

- - - 解决方案 - - -

child_tags = root.getchildren()
for child in child_tags:
    k = child.tag
    tags.append(k)

for tag in tags:
    list1 = root.findall(tag)
    tagslist = tagslist + list1

#remove duplicates
tagslist = list(dict.fromkeys(tagslist))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM