首页 > 解决方案 > 从xml文件中提取数据(python)

问题描述

我想从 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”)。我怎么能做到?

标签: pythonxml

解决方案


由于您似乎正在使用该xml.dom.minidom模块,因此您需要查看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 库以获得更强大的 ElementTree API 实现,例如额外的 XPath 查询支持。


推荐阅读