VBA从MSXML2.IXMLDOMNodeList取第2个Item报错如何解决?
问题根因及解决方法
- 索引规则错误:MSXML2.IXMLDOMNodeList采用零基索引规则,第一个节点对应索引
0,第二个节点对应索引1。你调用Item(2)是读取第三个节点,当前节点列表只有2个元素,超出索引范围自然返回空对象,触发对象未设置报错。 - 赋值语法错误:给
IXMLDOMNode类型的对象变量赋值时,必须加Set关键字,直接赋值会触发语法错误。如果直接提取节点文本内容(字符串类型),则不需要加Set。
正确代码示例
情况1:先获取第二个节点对象,再读取文本
Set xNodes = xDoc.getElementsByTagName("series_id") ' 先判断节点数量是否符合预期,避免索引越界 If xNodes.Length >= 2 Then Set rsObj = xNodes.Item(1) rsStr = rsObj.Text End If
情况2:直接提取第二个节点的文本内容
Set xNodes = xDoc.getElementsByTagName("series_id") If xNodes.Length >= 2 Then rsStr = xNodes.Item(1).Text End If
报错截图

内容的提问来源于stack exchange,提问作者Richard Strott
相关产品推荐
相关产品推荐

