python elementtree_python – 在ElementTree中使用XPath

你有两个问题.

1)元素只包含根元素,而不是递归地包含整个文档.它的类型为Element而不是ElementTree.

2)如果将命名空间保留在XML中,则搜索字符串需要使用命名空间.

解决问题#1:

你需要改变:

element = ET.parse(fp).getroot()

至:

element = ET.parse(fp)

解决问题#2:

您可以从XML文档中取出xmlns,使其如下所示:

2260

1853

使用此文档,您可以使用以下搜索字符串:

e = element.findall('Items/Item/ItemAttributes/ListPrice/Amount')

完整代码:

from elementtree import ElementTree as ET

fp = open("output.xml","r")

element = ET.parse(fp)

e = element.findall('Items/Item/ItemAttributes/ListPrice/Amount')

for i in e:

print i.text

对问题#2的替代解决方法:

否则,您需要在srearch字符串中为每个元素指定xmlns.

完整代码:

from elementtree import ElementTree as ET

fp = open("output.xml","r")

element = ET.parse(fp)

namespace = "{http://webservices.amazon.com/AWSECommerceService/2008-08-19}"

e = element.findall('{0}Items/{0}Item/{0}ItemAttributes/{0}ListPrice/{0}Amount'.format(namespace))

for i in e:

print i.text

两个印刷品:

2260

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值