2017-03-13 10 views
1

私はElementTreeを初めて使用しています。私は<sid>の値をXMLレスポンスから奪い取ろうとしています。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' 
>>> 
関連する問題