У меня возникли проблемы с разбором XML. Я довольно новичок в python, поэтому я, возможно, не понимаю концепцию, или я могу пропустить шаг.Как правильно разобрать этот XML? Python - ElementTree
XML-фрагмент:
<result created="2015-12-05T12:46:00-06:00" host="www.systemmonitor.us" status="OK">
<items>
<client>
<clientid>67300</clientid>
<name>
<![CDATA[ ACME Company ]]>
</name>
<site>
<siteid>85663</siteid>
<name>
<![CDATA[ Los Angeles ]]>
</name>
<workstations/>
<servers>
<server>
<id>597207</id>
<name>
<![CDATA[ SERVER1 ]]>
</name>
<offline>
<description>
<![CDATA[ OFFLINE - MAINTENANCE MODE ]]>
</description>
<startdate>2015-11-25</startdate>
<starttime>01:40:07</starttime>
</offline>
</server>
<server>
<id>2252213</id>
<name>
<![CDATA[ SERVER2 ]]>
</name>
<overdue>
<description>
<![CDATA[ Overdue ]]>
</description>
<startdate>2015-11-25</startdate>
<starttime>01:57:40</starttime>
</overdue>
</server>
</servers>
</site>
</client>
Мне нужно извлечь некоторые элементы, так что я могу раздвинуть эти элементы в нашу систему CRM.
Вот мой код:
import requests
import xml.etree.ElementTree as ET
url = "https://www.systemmonitor.us/api/"
querystring = {"apikey":"SUPERSECRETAPIKEY","service":"list_failing_checks"}
response = requests.request("GET", url, params=querystring)
msg = response.text
tree = ET.ElementTree(ET.fromstring(msg))
client_ids = tree.find('clientid')
print client_ids
Если я пытаюсь получить client_id от msg.find («» идентификатору клиента) он только возвращает целое число. 144. (Я предполагаю, что это число раз, когда оно найдено в xml.) Если я использую tree.find ('clientid'), я получаю []. Я еще не пытался перебирать данные, потому что я не могу даже найти его.
Я думаю, что я пробовал любую другую комбинацию, которую я могу найти и думаю, но я не могу решить эту проблему. find(), findall() и т. д. Мой мозг болит от хлопания его на столе.
Мне нужно было бы изолировать клиента, имя, просрочку/описание.
Может кто-нибудь объяснить, что я сделал неправильно или что мне не хватает? Спасибо.
Оба возвращения <Элемент 'clientid' на 0x10eba8d90>. Разве он не должен возвращать 67300? – MBH
@MBH: см. Текст. – Daniel
OMG. Огромное спасибо. Теперь я могу ясно видеть шаги. Я чувствую себя глупо, когда эта головокружение видна, когда наконец появляется куча чисел. – MBH