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//table[@head = 'Renovation class 1, kWh/m2']:定位到head属性为指定内容的<table>节点/row[id='Total energy requirement']:在该<table>下找到包含<id>元素且文本为Total energy requirement的<row>节点/value:获取该<row>节点下的<value>元素
内容的提问来源于stack exchange,提问作者Frederik Seeberg
相关产品推荐
相关产品推荐

