2017-03-13 21 views
1

我是ElementTree的新手。我试图阻止XML响应中的<sid>值。Python ElementTree找不到工作

以下代码不适用于我。我如何提取<sid>中的值?我不确定数字53是从哪里来的。

... 
    r = requests.post(self.dispatchurl, verify=False, auth=HTTPBasicAuth(self.user, self.passwd)) 
    print r.content 
    tree = ET.ElementTree(r.content) 
    print tree.find('sid') 

输出:

/usr/bin/python2.7 /home/myuser/PycharmProjects/autoshun/shunlibs/SplunkSearch.py 
<?xml version="1.0" encoding="UTF-8"?> 
<response> 
    <sid>super__awesome__search__searchname_at_1489433276_24700</sid> 
</response> 

53 

Process finished with exit code 0 
+0

这个数字*是在字符串*中首次出现''sid“'的位置。这应该是一个评论,说实话,我不知道如何得到''的价值,因为我没有任何'ElementTree'的经验。 – ForceBru

回答

1

下面的代码为我工作:

r = requests.post(self.dispatchurl, verify=False, auth=HTTPBasicAuth(self.user, self.passwd), stream=True) 
    root = ET.fromstring(r.content) 
    for i in root.iter('response'): 
     print i.find('sid').text 
0

作为替代方案,您可以使用XPath。

>>> import xml.etree.ElementTree as ET 
>>> xml = '''\ 
... <?xml version="1.0" encoding="UTF-8"?> 
... <response> 
...  <sid>super__awesome__search__searchname_at_1489433276_24700</sid> 
... </response> 
... ''' 
>>> root = ET.fromstring(xml) 
>>> for sid in root.iterfind('.//sid'): 
...  sid.text 
... 
'super__awesome__search__searchname_at_1489433276_24700' 
>>>