python - 从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”)。我怎么能做到?
解决方案
由于您似乎正在使用该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 查询支持。