0

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

でも1ループで値段も出したい…こんな感じで…

for element in doc.findall('/items/item'):
  print element.name.text
  print element.price.text

...しかし、私はできません。次に何をするかわからない - 「要素」ごとに別の「検索」を行う必要がありますか?

助けてくれてありがとう!

4

2 に答える 2

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 内のすべての項目を繰り返し処理し、その子ノードに割り当てられたテキストを取得します。

于 2011-02-01T22:40:59.267 に答える
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 要素を取得します。次に、検索を実行して価格と名前を取得し、結果を出力します。このコードにより、常に名前が最初に印刷され、価格が 2 番目に印刷されることが保証されます。

于 2011-02-01T23:14:21.710 に答える