Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Как распарсить xml python?
@evgeh4ik

Корректно распарсить xml python?

Здравствуйте!
Ребята, подскажите, каким образом можно корректно распарить xml документ при помощи PYTHON?
Хотелось бы разобраться на практике с комментариями.
Вот мой документ - defaultVar.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<repository xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://www.tibco.com/xmlns/repo/types/2002">
  <globalVariables>
    <globalVariable>
      <name>Host</name>
      <value>10.64.13.131:1576</value>
      <deploymentSettable>true</deploymentSettable>
      <serviceSettable>false</serviceSettable>
      <type>String</type>
      <modTime>1559628965605</modTime>
    </globalVariable>
    <globalVariable>
      <name>MaxConnections</name>
      <value>10</value>
      <deploymentSettable>true</deploymentSettable>
      <serviceSettable>false</serviceSettable>
      <type>Integer</type>
      <modTime>1559628965605</modTime>
    </globalVariable>
    <globalVariable>
      <name>SID</name>
      <value>taffy</value>
      <deploymentSettable>true</deploymentSettable>
      <serviceSettable>false</serviceSettable>
      <type>String</type>
      <modTime>1559628965605</modTime>
    </globalVariable>
  </globalVariables>
</repository>


Пытаюсь использовать таким образом (вывести тэг с названием SID и все его атрибуты):
import xml.etree.ElementTree as ET
tree = ET.parse("C:/Users/admin/Documents/Python/defaultVars.xml")
for element in tree.findall("repository/globalVariables/globalVariable"):
name = element.find("SID")
print(element.tag, name.text, element.attrib)


Сохранил как parcing.py
Запускаю python.exe parcing.py через cmd
Результат выполнения - пусто.
Можете подсказать, почему?
  • Вопрос задан
  • 572 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
Я бы взял xml.dom.minidom вместо xml.etree.ElementTree , потому что он с тегами лучше дружит.

import xml.dom.minidom

doc = xml.dom.minidom.parse("test.xml")
data ={}
for info in doc.getElementsByTagName("globalVariable"):
    name = str(info.getElementsByTagName("name")[0].firstChild.data)
    value = str(info.getElementsByTagName("value")[0].firstChild.data)
    data[name]=value
print(data)

результат будет таким:
{'Host': '10.64.13.131:1576', 'SID': 'taffy', 'MaxConnections': '10'}
Ответ написан
Ответы на вопрос 1
laim731
@laim731
Айтишник
А я карты сайта разбираю через BS4, очень быстро и в три строки)
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы