0

それらの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で行う必要があります。

4

1 に答える 1