Python Can';不要使用多个ElementTree fromstring语句

Python Can';不要使用多个ElementTree fromstring语句,python,python-3.x,xml,elementtree,Python,Python 3.x,Xml,Elementtree,我可能用了完全错误的方法,但我对ElementTree和XML名称空间是新手。我正在处理一个eBay API响应,并试图从同一个XML响应中获取多个数据段。我首先尝试了几个语句,如: for i in ET.fromstring(response.text, parser=parser).findall('.//{urn:ebay:apis:eBLBaseComponents}UPC'): print(i.text) for x in ET.fromstring(response.tex

我可能用了完全错误的方法,但我对ElementTree和XML名称空间是新手。我正在处理一个eBay API响应,并试图从同一个XML响应中获取多个数据段。我首先尝试了几个
语句,如:

for i in ET.fromstring(response.text, parser=parser).findall('.//{urn:ebay:apis:eBLBaseComponents}UPC'):
    print(i.text)
for x in ET.fromstring(response.text, parser=parser).findall('.//{urn:ebay:apis:eBLBaseComponents}Title'):
    print(x.text)
因此,第一个for语句可以很好地工作——它获得了我需要的所有数据。但第二个返回一个错误:

xml.etree.ElementTree.ParseError: parsing finished: line 2, column 13941
所以我想,好吧,让我们从不同的角度来尝试。我使用了以下代码:

for x in ET.fromstring(response.text, parser=parser):
    one = x.findall('.//{urn:ebay:apis:eBLBaseComponents}UPC')
    two = x.findall('.//{urn:ebay:apis:eBLBaseComponents}Title')
    print(one, two)
所以这返回了大量的“元素”,所以一开始我觉得-太棒了!示例如下:

[<Element '{urn:ebay:apis:eBLBaseComponents}UPC' at 0x03BFF8A0>, <Element '{urn:ebay:apis:eBLBaseComponents}UPC' at 0x03BFFB40>, <Element '{urn:ebay:apis:eBLBaseComponents}UPC' at 0x03BFFDE0>, <Element '{urn:ebay:apis:eBLBaseComponents}UPC' at 0x03C020C0> etc...
[、等。。。
因此,我认为这是从同一XML源获取多个数据段的正确方法。但是,由于我没有执行
x.text
操作,所以我实际上没有获取数据,只是获取元素。我意识到执行
print(one.text)
操作是行不通的


因此,我的问题是,我在这里的路径正确吗?其次,我如何从XML响应中获取多个数据段?或者,如何将这些元素转换为我需要的数据?

findall
返回一个列表。您需要处理列表中的每个项目。明白了!我现在可以使用它了。非常感谢:)