无法使用多个ElementTree fromstring语句

时间:2019-12-13 15:41:00

标签: python python-3.x xml elementtree

我可能以完全错误的方式进行此操作,但是我是ElementTree和XML名称空间的新手。我正在使用eBay API响应,并且试图从同一XML响应中获取多个数据。我首先尝试了几条for语句,例如:

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,因此实际上并没有获取数据,仅是Element。而且我意识到做print(one.text)无效。

所以我的问题是,我在这里走的路正确吗?其次,我如何从XML响应中获取多个数据-或者将这些Elements转换成我需要的数据?

0 个答案:

没有答案