【发布时间】:2013-09-05 18:57:03
【问题描述】:
如果其中一个包含关键字,我需要从 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'}
这里的“x”无关紧要。
如何从<Amount> 返回并将整个<Offers> 组复制到一个新文件或打印出来。需要用 ElementTree 来完成。
【问题讨论】:
-
只有 ElementTree?因为这个包pythonhosted.org/pyquery做这种想法很有趣,它是一个类似jquery的系统
-
我在这里仅限于标准:/
标签: python xml xpath elementtree