2017-03-13 3 views
1

Ich bin neu in ElementTree. Ich versuche, den <sid> Wert aus einer XML-Antwort zu erwischen.Python ElementTree funktioniert nicht

Der folgende Code funktioniert nicht für mich. Wie extrahiere ich den Wert in <sid>? Ich bin nicht sicher, wo die Nummer 53 von hier kommt.

... 
    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') 

Ausgang:

/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

Diese Zahl ist * die Position, an der das erste Vorkommen von '" sid "' in der Zeichenkette * beginnt. Das sollte ein Kommentar sein, um ehrlich zu sein, ich weiß nicht, wie man den Wert in '' bekommt, weil ich keine Erfahrung mit 'ElementTree' habe. – ForceBru

Antwort

1

der folgende Code für mich gearbeitet:

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

Als Alternative können Sie XPath verwenden.

>>> 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' 
>>>