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

使用Python3 Minidom提取XML标签内的数值数据

用Python3 minidom提取XML标签中的数值

我来给你一步步讲解怎么用Python3的minidom来提取你提供的XML片段里的数值,首先要注意的是,你给的是XML片段,minidom需要完整的XML结构才能解析,所以我们得先给它套一个根节点(比如<root>)。

具体步骤和代码示例

首先导入minidom模块,然后解析XML内容,再逐个提取需要的数值:

from xml.dom import minidom

# 把你的XML片段补全为完整的XML结构
xml_content = """
<root>
    <start-date type="date">1980-12-12</start-date>
    <end-date type="date">2018-05-04</end-date>
    <data type="array">
        <datum type="array">
            <datum type="date">2018-05-04</datum>
            <datum type="float">178.25</datum>
            <datum type="float">184.25</datum>
            <datum type="float">178.17</datum>
            <datum type="float">183.83</datum>
            <datum type="float">5620</datum>
        </datum>
    </data>
</root>
"""

# 解析XML
dom = minidom.parseString(xml_content)

# 提取start-date和end-date的数值
start_date = dom.getElementsByTagName('start-date')[0].childNodes[0].data
end_date = dom.getElementsByTagName('end-date')[0].childNodes[0].data
print(f"开始日期: {start_date}")
print(f"结束日期: {end_date}")

# 提取data下的datum数组中的数值
# 先找到最外层的data标签,再找到里面的datum(type为array的那个)
data_array = dom.getElementsByTagName('data')[0].getElementsByTagName('datum')[0]
# 遍历这个数组里的所有子datum标签
datum_items = data_array.getElementsByTagName('datum')

extracted_values = []
for item in datum_items:
    # 获取标签的type属性
    item_type = item.getAttribute('type')
    # 获取标签内的文本值
    item_value = item.childNodes[0].data
    # 根据类型转换数值(可选,如果你需要转成对应的数据类型)
    if item_type == 'float':
        item_value = float(item_value)
    extracted_values.append((item_type, item_value))

print("\n提取的data数组数值:")
for type_val, val in extracted_values:
    print(f"类型: {type_val}, 值: {val}")

代码关键点说明

  • minidom.parseString():用来解析XML字符串,如果你的XML是存放在文件里,可以用minidom.parse('your_file.xml')。
  • getElementsByTagName(tag_name):根据标签名获取所有匹配的节点,返回的是节点列表,所以我们用[0]取第一个匹配的节点(因为你的XML里每个标签都是唯一的)。
  • childNodes[0].data:minidom中,标签的文本内容是作为标签的子节点存在的,所以我们取第一个子节点的data属性来获取文本值。
  • getAttribute(attr_name):用来获取标签的属性值,比如这里的type属性,你可以根据它来区分不同类型的数值,做对应的类型转换。

运行这段代码,就能把你需要的所有数值都提取出来啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:31:20