我使用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}$
重写XML解析代码的一种方法如下。在这里,我定义了一个生成器,它循环根元素的所有
CD
元素(我不检查这是否是CATALOG
元素,尽管您可以添加该签入)。此生成器将每个CD
元素的所有子元素作为字典返回。在使用生成器比构建包含所有
^{1}$CD
元素的字典更有效,尤其是在XML文件非常大的情况下,因为您只在内存中存储一个CD
元素。在以下是上述实际操作方法:
^{pr2}$未测试:
^{1}$相关问题 更多 >
编程相关推荐