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

Python解析含嵌入属性的XML:获取指定节点值的问题

用xml.etree.ElementTree提取特定属性的XML节点值

别担心,这种结构的XML完全可以用xml.etree.ElementTree搞定!你的需求是找到Ident为"RoutineReport"且Key为"SequenceNumber"的NGKNODE节点的Value属性值,下面是具体的实现步骤和代码:

步骤说明

  • 导入xml.etree.ElementTree模块(通常我们会简写为ET)
  • 解析你的XML内容(支持字符串或本地文件两种形式)
  • 使用XPath表达式精准匹配同时满足Ident和Key条件的NGKNODE节点
  • 提取目标节点的Value属性值

完整代码示例

import xml.etree.ElementTree as ET

# 你的XML内容
xml_content = '''<?xml version="1.0" encoding="utf-8"?>
<NGKCONFIG Report="ivory_2019-10-08_08h32m26s">
    <NGKNODES Format="1" Version="3">
        <NGKNODE Ident="Default" Key="DocLanguage" Value="en" />
        <NGKNODE Ident="Default" Key="Machine" Value="Pane X234" />
        <NGKNODE Ident="Default" Key="Look" Value="Mirr2012" />
        <NGKNODE Ident="Default" Key="MachineGroup" Value="Mirr1743" />
        <NGKNODE Ident="DailyReport" Key="Owner" Value="Milot" />
        <NGKNODE Ident="RoutineReport" Key="Owner" Value="Milot" />
        <NGKNODE Ident="BackupReport" Key="Owner" Value="Milot" />
        <NGKNODE Ident="RoutineReport" Key="NextReportAt" Value="2020-06-26T00:00:00-04:00" />
        <NGKNODE Ident="BackupReport" Key="NextReportAt" Value="2020-06-26T00:00:00-04:00" />
        <NGKNODE Ident="BackupReport" Key="SequenceNumber" Value="105" />
        <NGKNODE Ident="BackupReport" Key="LastReportAt" Value="2020-06-25T00:00:00-04:00" />
        <NGKNODE Ident="RoutineReport" Key="SequenceNumber" Value="199" />
        <NGKNODE Ident="RoutineReport" Key="LastReportAt" Value="2020-06-25T01:44:46-04:00" />
    </NGKNODES>
</NGKCONFIG>'''

# 解析XML字符串
root = ET.fromstring(xml_content)

# 使用XPath筛选符合条件的节点
target_node = root.find(".//NGKNODE[@Ident='RoutineReport' and @Key='SequenceNumber']")

# 提取Value值(处理节点不存在的情况)
if target_node is not None:
    sequence_number = target_node.get("Value")
    print(f"SequenceNumber的值是:{sequence_number}")
else:
    print("未找到符合条件的节点")

代码解释

  • ET.fromstring(xml_content):将XML字符串解析为Element对象,方便后续操作
  • XPath表达式.//NGKNODE[@Ident='RoutineReport' and @Key='SequenceNumber']:
    • .//表示从当前节点(root)开始递归查找所有子节点
    • NGKNODE指定要查找的节点名称
    • [@Ident='RoutineReport' and @Key='SequenceNumber']是属性筛选条件,要求同时满足Ident和Key的匹配值
  • target_node.get("Value"):获取节点的Value属性值

如果你的XML是存储在文件中,只需要把ET.fromstring(xml_content)换成tree = ET.parse("your_xml_file.xml"),然后root = tree.getroot()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:53:12