我在处理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:
....
谢谢您!
您可以使用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