Извлечь данные из XML-файла (Python) - PullRequest
1 голос
/ 06 октября 2019

Я хочу извлечь некоторые данные из файла xml (xmldoc): <chart><series><value xid=\'0\'>2/01/2011</value>....

Я мог бы извлечь дату «2/01/2011» с помощью следующего кода:

chart= xmldoc.getElementsByTagName('chart')[0]
series= chart.getElementsByTagName('series')[0]
Dates=[]
for element in series.getElementsByTagName('value'):
    Dates.append(element.firstChild.data)

Но я не могу получить значение 'xid' (здесь 0). Как я мог это сделать?

1 Ответ

0 голосов
/ 06 октября 2019

Поскольку вы, похоже, используете модуль xml.dom.minidom, вам нужно взглянуть на спецификацию *1002* DOM уровня 1, чтобы увидеть, какой API реализован. Для доступа к атрибутам элементы имеют метод getAttribute() :

element.getAttribute("xid")

Однако DOM - это ужасный API для использования. Он разработан, чтобы быть наименьшим общим знаменателем среди широкого спектра языков программирования. Для обработки XML ElementTree API намного удобнее:

from xml.etree import ElementTree as ET

tree = ET.parse(xmlfile)  # or ET.fromstring()
dates = []
for element in tree.findall('.//series/value'):  # all <value> elements in <series> elements
    xid = element.attrib['xid']  # attribute access via the .attrib dictionary
    date = element.text  # the text data in the element

Вы также можете посмотреть в библиотеке lxml для более мощной реализации API ElementTree, например, дополнительная поддержка запросов XPath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...