使用Python进行XML解析

2024-04-24 13:18:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python和ElementTree来解析XML文件。我想列出一个包含所有CD信息的字典清单。我可以稍后使用此列表收集信息,例如显示来自美国的CD的标题。下面的代码正在工作,但如果YEAR标记不是CD的最后一个标记,则很容易被破坏。如何重写此代码,使标记可以按任何顺序排列?在

from xml.etree.ElementTree import ElementTree

f = open("cd_catalog.xml")
tree = ElementTree()
tree.parse(f)

catalog = []
cd = {}
for node in tree.iter():
    if node.tag != "CD" and node.tag != "CATALOG":
        tagtext = (node.tag,node.text),
        cd.update(tagtext)
    if node.tag == "YEAR":
        catalog.append(cd)
        cd = {}

for cd in catalog:
    if cd["COUNTRY"] == "USA":
        print("The cd named {0} is from USA".format(cd["TITLE"]))

xml文件的2个条目:

^{pr2}$

Tags: 文件代码from标记信息nodetreeif
2条回答

重写XML解析代码的一种方法如下。在这里,我定义了一个生成器,它循环根元素的所有CD元素(我不检查这是否是CATALOG元素,尽管您可以添加该签入)。此生成器将每个CD元素的所有子元素作为字典返回。在

使用生成器比构建包含所有CD元素的字典更有效,尤其是在XML文件非常大的情况下,因为您只在内存中存储一个CD元素。在

^{1}$

以下是上述实际操作方法:

^{pr2}$

未测试:

^{1}$

相关问题 更多 >