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

VBA中MSXML2.DOMDocument获取属性异常:Attributes(0)有效getAttribute无效

解决VBA中MSXML2.DOMDocument getAttribute返回空值的问题

嘿,我之前也踩过这个坑!你用Attributes(0).Text能顺利拿到ID,但getAttribute("ID")返回空,大概率是MSXML版本或者DOM配置的问题,给你几个实用的解决思路:

  • 指定使用MSXML 6.0版本:旧版本的MSXML(比如3.0)在属性读取逻辑上有兼容性bug,创建DOM对象时明确指定6.0版本能规避很多问题:

    Set XDoc = CreateObject("MSXML2.DOMDocument.6.0")
    
  • 加载XML前配置必要的DOM属性:加上这几行设置,能避免XPath解析和属性读取的各种奇怪冲突:

    XDoc.async = False ' 同步加载,确保XML完全加载完成后再执行后续操作
    XDoc.validateOnParse = False ' 若不需要验证XML结构,关闭此选项提升效率并避免意外报错
    XDoc.setProperty "SelectionLanguage", "XPath" ' 明确指定使用XPath语法,避免默认旧语法的兼容性问题
    
  • 换用更稳定的属性读取方式:如果还是不行,试试通过getNamedItem获取属性节点再取值,这个方法在各版本MSXML中都很可靠:

    Debug.Print loc.Attributes.getNamedItem("ID").Text
    

另外再确认下XML里的属性名确实是ID(大小写完全匹配)——XML属性名是大小写敏感的,不过你用Attributes(0)能拿到值,说明这一步应该没问题。

按照上面的步骤调整后,应该就能顺利读取到Location的ID属性值了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:00:36