你有两个问题.
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