2016-04-06 29 views
1
import flickrapi 
from xml.etree import ElementTree as ET 
from lxml import etree 

flickr = flickrapi.FlickrAPI(api_key,secret=api_secret) 
r = flickr.photos_search(tags='e-waste', has_geo="1", per_page='100') 
tree = ET.ElementTree(r) 

xml_input = etree.parse("response_clean.xml") 
transform = etree.XSLT(xslt_root) 
links = str(transform(xml_input)) 

这个小脚本的想法是从Flickr获取xml响应,然后使用xsl文件进一步处理它。如何处理来自flickr的xml响应

我想转换r对象(其是lxml.etree._Element类型) 到xml_input(的lxml.etree._ElementTree类型)。

我用tree = ET.ElementTree(r),但结果是xml.etree.ElementTree.ElementTree

我看到这不完全相同,但我不明白区别。

r如何转换为xml_input

回答

0

该代码创建xml.etree.ElementTree.ElementTree,因为ET中对应的import语句引用xml.etree.ElementTree。您应该使用etree.ElementTree代替,它是从lxml导入的:

>>> from xml.etree import ElementTree as ET 
>>> from lxml import etree 
>>> raw ='''<root></root>''' 
>>> r = etree.fromstring(raw) 
>>> root = etree.ElementTree(r) 
>>> type(r) 
<type 'lxml.etree._Element'> 
>>> type(root) 
<type 'lxml.etree._ElementTree'>