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
相关产品推荐
相关产品推荐

