我正在尝试使用elementtree循环遍历xml文件。该文件看起来有点像这样:
<items>
<item>
<name>Blah</name>
<price>1234</price>
</item>
<item>
<name>Something</name>
<price>2345</price>
</item>
</items>
用elementtree读完后,我可以这样做:
for element in doc.findall('/items/item/name):
print element.text
但是有了一个循环,我也想得到这个价格......就像这样......
for element in doc.findall('/items/item'):
print element.name.text
print element.price.text
......但我不能。不知道下一步是什么 - 我是否需要为每个“元素”做另一个“查找”?
非常感谢您的帮助!
答案 0 :(得分:4)
请阅读文档(http://docs.python.org/library/xml.etree.elementtree.html)。这是一个有效的例子:
for elem in doc.findall('item'):
for i in elem.getchildren():
print i.text
输出:
布拉赫 1234 某物 2345
在我的代码中,我遍历xml中的所有项目并检索分配有其子节点的文本。
答案 1 :(得分:2)
您可以使用以下方法对返回值进行精细控制。
for element in doc.findall('item'): # Get the items out.
# Iterate thought the list of items(They are in element objects)
print 'Item' # Yey print stuff out!
print 'Name: ', element.find('name').text
print 'Price:', element.find('price').text
输出以下内容:
Item
Name: Blah
Price: 1234
Item
Name: Something
Price: 2345
代码首先获取所有项目元素。然后执行查找以获取价格和名称并打印结果。 此代码可确保您始终首先打印名称,然后打印价格。