Python, в настоящее время используется 2.7, но может легко измениться на последний и самый лучший.
Необходимо проанализировать этот XML и вернуть значение INT, содержащееся в элементе. Это не мой XML. Это происходит из части программного обеспечения уровня предприятия.
<counters>
<item name="stats/counters/session/responsetime" type="int">1047</item>
<item name="stats/counters/session/responsecount" type="int">7423</item>
<item name="stats/counters/init/inittime" type="int">36339</item>
<item name="stats/counters/init/fetchtime" type="int">8097</item>
<item name="stats/connectionsetups" type="int">579</item>
<item name="stats/activesessions" type="int">4294967289</item>
<item name="stats/activeconnections" type="int">0</item>
</counters>
Код:
import xml.etree.ElementTree as ET
import xml
def _getstats():
resp = requests.get(urlStats)
#Writing XML to disk. This makes parsing it MUCH easier.
with open('stats_10.xml', 'wb') as f:
f.write(resp.content)
f.close()
tree = ET.parse('stats_10.xml')
root = tree.getroot()
active = root.find('stats/activesessions')
print active
Возвращение всегда Нет. Я использую ElementTree. Прочитайте документацию (https://docs.python.org/3.0/library/xml.etree.elementtree.html) и многие страницы StackOF.
Я думаю, проблема в том, что парсер не понимает косую черту.
Попытка извлечь по имени, используя «active = int (root ['stats / activesessions'])» вместо корневого поиска, который возвращает эту ошибку:
TypeError: list indices must be integers, not str
Также пробовал xmltodict, но это было еще хуже, чем при использовании ElementTree. Ошибка всегда будет такова: «индексы списка должны быть целыми числами».
Наконец, это динамический XML-документ. Индексирование по ROW не является опцией, потому что на холостом ходу программа возвращает, например, 10 строк, а при нагрузке - 15, при этом дополнительные строки смешиваются с другими строками. Я должен тянуть по имени ребенка.
Заранее благодарю за любую помощь!
Сложение:
Я могу запустить итерацию по XML и вытащить значение. Однако, как указано выше, XML изменится, и число строк увеличится, что приведет к потере моих индексов.
active = root[5].text
print active