使用elemen在循环中检索多个xml项

2024-04-16 06:56:30 发布

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

我正试图用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

…但我不能。不确定接下来是什么-我需要对每个“元素”执行另一个“查找”吗?

非常感谢您的帮助!


Tags: 文件textnameinfordocitemsxml
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

代码首先获取所有item元素。然后执行查找以获取价格、名称和打印结果。 此代码确保您总是先打印姓名,然后打印价格。

请阅读文档(http://docs.python.org/library/xml.etree.elementtree.html)。下面是一个工作示例:

for elem in doc.findall('item'):
   for i in  elem.getchildren():
      print i.text

输出:

Blah 1234 Something 2345

在我的代码中,我遍历xml中的所有项,并检索与子节点一起分配的文本。

相关问题 更多 >