Мне нужно извлечь из 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>
Мой сценарий выводит значение суммы, если оно найдено, и == 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'}
«Х» здесь не имеет значения.
Как вернуться из <Amount>
и скопировать всю группу <Offers>
в новый файл или просто распечатать. Это нужно сделать с помощью ElementTree.