それらの1つにキーワードが含まれている場合、XMLからいくつかのノードを抽出する必要があります。最後に、キーワードが見つかった場合に出力する場所を指定する必要があります。ここがトリッキーな部分です (少なくとも私にとっては ;-))。以下で詳しく説明します。XML:
<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://url">
<Items>
<Item>
<ItemAttributes>
<ListPrice>
<Amount>2260</Amount>
</ListPrice>
</ItemAttributes>
<Offers>
<Offer>
<OfferListing>
<Price>
<Amount>1853</Amount>
</Price>
</OfferListing>
</Offer>
</Offers>
<Offers>
<Offer>
<OfferListing>
<Price>
<Amount>1853</Amount>
</Price>
</OfferListing>
</Offer>
</Offers>
<Offers>
<Offer>
<OfferListing>
<Price>
<Amount>1200</Amount>
</Price>
</OfferListing>
</Offer>
</Offers>
</Item>
</Items>
</ItemSearchResponse>
私のスクリプトは、Amount 値が見つかった場合 == 1853 を出力します。実際に必要なのは、1853 が見つかった場合、スクリプトは全体<Offers>
を新しいファイルに抽出する必要があるということです。スクリプトを実行して行き詰まりました。グループ<Amount>
全体から戻ってコピーする方法がまったくわかりません。<Offers>
スクリプト 1:
import xml.etree.ElementTree as ET
import sys
name = str.strip(sys.argv[1])
filename = str.strip(sys.argv[2])
fp = open("sample.xml","r")
element = ET.parse(fp)
for elem in element.iter():
if elem.tag == '{http://url}Price':
output = {}
for elem1 in list(elem):
if elem1.tag == '{http://url}Amount':
if elem1.text == name:
output['Amount'] = elem1.text
print output
そして私の出力:
python sample1.py '1853' x
{'Amount': '1853'}
{'Amount': '1853'}
ここの「x」は関係ありません。
グループ全体を元に戻して新しいファイルに<Amount>
コピーする方法<Offers>
、または単に印刷する方法。ElementTreeで行う必要があります。