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

Excel VBA中如何通过文本而非索引提取XML子节点值

Excel VBA:通过匹配文本提取XML对应值

你可以通过优化XPath表达式,直接匹配<id>元素的文本内容来定位对应的<value>,无需依赖索引,这样代码更健壮,不会因为XML中row的顺序变化而失效。

修改后的VBA代码

Sub XML_import()
     
    Dim xmlObj As Object
    Set xmlObj = CreateObject("MSXML2.DOMDocument")
    
    xmlObj.SetProperty "SelectionLanguage", "XPath"
    xmlObj.async = False
    xmlObj.validateOnParse = False
    xmlObj.Load ("C:\Key_Numbers.xml")

    ' 通过匹配id文本获取对应value值
    Debug.Print xmlObj.SelectSingleNode("//table[@head = 'Renovation class 1, kWh/m2']/row[id='Total energy requirement']/value").Text
End Sub

关键说明

  • 使用SelectSingleNode替代SelectNodes,因为我们只需要匹配单个目标元素,更高效。
  • 核心XPath表达式://table[@head = 'Renovation class 1, kWh/m2']/row[id='Total energy requirement']/value
    1. //table[@head = 'Renovation class 1, kWh/m2']:定位到head属性为指定内容的<table>节点
    2. /row[id='Total energy requirement']:在该<table>下找到包含<id>元素且文本为Total energy requirement的<row>节点
    3. /value:获取该<row>节点下的<value>元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:50:58