You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从XML文件中获取数据?附使用的XML示例代码

从XML中提取数据的实用方法

嘿,我来帮你搞定从这段XML里提取数据的事儿!先把你提供的XML片段整理得更清晰些:

<?xml version="1.0" encoding="utf-8" ?> 
<body copyright="All data copyright Rutgers University 2018."> 
  <predictions agencyTitle="Rutgers University" routeTitle="Weekend 2" routeTag="wknd2" stopTitle="Quads" stopTag="quads"> 
    <direction title="To College Avenue Student Center"> 
      <prediction epochTime="1524963905243" seconds="1108" minutes="18" isDeparture="false" affectedByLayover="true" dirTag="wknd2_inbound" vehicle="4182" block="WK2R04"/>
    </direction>
  </predictions>
</body>

下面我用两种常用的Python方法来演示如何提取你需要的数据:

方法一:用Python内置的xml.etree.ElementTree

这是Python自带的XML解析工具,不需要额外安装,适合处理结构简单的XML。

示例代码:

import xml.etree.ElementTree as ET

# 如果是读取XML文件
tree = ET.parse('your_xml_file.xml')
root = tree.getroot()

# 如果是处理XML字符串,用下面这行替代上面两行
# root = ET.fromstring(your_xml_string)

# 提取body标签的copyright属性
print("版权信息:", root.attrib['copyright'])

# 提取predictions标签的属性
predictions_node = root.find('predictions')
print("机构名称:", predictions_node.attrib['agencyTitle'])
print("路线名称:", predictions_node.attrib['routeTitle'])
print("站点名称:", predictions_node.attrib['stopTitle'])

# 提取direction和prediction的信息
direction_node = predictions_node.find('direction')
print("行驶方向:", direction_node.attrib['title'])

prediction_node = direction_node.find('prediction')
print("预计到达分钟数:", prediction_node.attrib['minutes'])
print("车辆编号:", prediction_node.attrib['vehicle'])

方法二:用lxml库(支持XPath,更适合复杂XML)

lxml是功能更强的解析库,支持XPath查询,处理复杂嵌套的XML会更高效。先安装它:

pip install lxml

示例代码:

from lxml import etree

# 解析XML文件
tree = etree.parse('your_xml_file.xml')

# 用XPath直接定位提取数据
# 获取body的版权信息
copyright_info = tree.xpath('/body/@copyright')[0]
print("版权信息:", copyright_info)

# 获取路线名称
route_title = tree.xpath('/body/predictions/@routeTitle')[0]
print("路线名称:", route_title)

# 获取预计到达分钟数和车辆编号
prediction_attrs = tree.xpath('/body/predictions/direction/prediction')[0].attrib
print("预计到达分钟数:", prediction_attrs['minutes'])
print("车辆编号:", prediction_attrs['vehicle'])

小提示

  • XML节点的属性都存在attrib字典里,直接通过键名就能获取
  • find()方法会返回第一个匹配的子节点,findall()会返回所有匹配的节点列表
  • XPath语法可以让你像文件路径一样直接定位到目标节点,比如/body/predictions/direction就是从根节点到prediction父节点的完整路径

内容的提问来源于stack exchange,提问作者Tisymc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:27:03