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

问题描述 投票:0回答:1

我在处理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:

....

谢谢您!

python python-3.x xml xml-parsing
1个回答
0
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.