Парсинг xml файла - Python

Узнай цену своей работы

Формулировка задачи:

Изучаю python, пробую парсить xml Файл следующего вида
Листинг программы
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <DeviceStatus version="1.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
  3. <currentDeviceTime>2016-09-11T21:27:54+12:00</currentDeviceTime>
  4. <deviceUpTime>217496</deviceUpTime>
  5. <CPUList>
  6. <CPU>
  7. <cpuDescription>ARMv7 Processor rev 2 (v7l)</cpuDescription>
  8. <cpuUtilization>4</cpuUtilization>
  9. </CPU>
  10. </CPUList>
  11. <MemoryList>
  12. <Memory>
  13. <memoryDescription>DDR Memory</memoryDescription>
  14. <memoryUsage>
  15. 80.148438</memoryUsage>
  16. <memoryAvailable>
  17. 33.449219</memoryAvailable>
  18. </Memory>
  19. </MemoryList>
  20. </DeviceStatus>
Вот таким способом получается прочитать все дерево xml
Листинг программы
  1. #!/usr/bin/python3
  2. import requests
  3. import sys
  4. import readinifile as readini
  5. from xml.etree import cElementTree as ET
  6. r = requests.get('http://'+readini.getip(sys.argv[1])+'/status', auth=(readini.getlogin(sys.argv[1]),readini.getpassword(sys.argv[1])), stream=True)
  7. root = ET.fromstring(r.text)
  8. for child in root.iterfind('.//'):
  9. print (child.tag, child.keys(), child.items(), child.text)
но как мне получить конкретное значение определенного тэга ? Скажем узнать memoryAvailable Пробовал в iterfind() подставлять значение MemoryList ил Memory, тогда выдача print вообще пустая

Решение задачи: «Парсинг xml файла»

textual
Листинг программы
  1. root@raspberrypi:/home/pi/scripts# ./test_status.py
  2.  
  3. 33.449219

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут