1

私のアプリケーションでは、Amazon から xml で情報を受け取ります。そのため、simplexml で値を読み取ってアクセスします。

私の問題は、同じ名前を持つ複数の近隣文字列にアクセスしたい場合です。例 :

<ItemAttributes>
<Author>Brian Herbert</Author>
<Author>Kevin J Anderson</Author>
<Author>Frank Herbert</Author>
<Binding>Paperback</Binding>
<EAN>9782221088913</EAN>

3人の作家が欲しい!フランクとブライアン・ハーバート、そしてアンダーソンも。

各コマンドを起動したときの結果は次のとおりです。

        >>> for cle in xml['ItemSearchResponse']['Items']['Item'][1]['ItemAttributes'].values():
...     print cle
... 
749782221088913
Robert Laffont
2221088913
9782221088913
Frank Herbert
{u'EANListElement': u'9782221088913'}

        >>> for item in enumerate(xml['ItemSearchResponse']['Items']['Item'][1]['ItemAttributes']['Author']):
...     print item
... 
F
r
a
n
k

H
e
r
b
e
r
t

だから私はリストの最後の項目だけにアクセスしますが、いくつかあります。どのようにできるのか ?PHP では、「foreach author in xml['...']['Author']; print author」を実行しましたが、うまくいきました。ここで、この解決策は私が書いた2番目のものであり、期待した結果が得られません! 著者の名前に1つずつアクセスする方法はありますか? ありがとう !

4

3 に答える 3

0

ElementTree を使用した実際の例を次に示します。

>>> import xml.etree.ElementTree as ET

>>> xml="""<ItemAttributes>
<Author>Brian Herbert</Author>
<Author>Kevin J Anderson</Author>
<Author>Frank Herbert</Author>
<Binding>Paperback</Binding>
<EAN>9782221088913</EAN>
</ItemAttributes>"""

>>> root = ET.fromstring(xml)

>>> for author in root.iter('Author'):
    print author.text


Brian Herbert
Kevin J Anderson
Frank Herbert

これが役立つことを願っています。

ありがとうございました。

于 2013-07-12T17:25:02.650 に答える