【发布时间】:2016-03-03 22:47:42
【问题描述】:
我在 VBA 中有以下代码
Dim userBeanList As MSXML2.IXMLDOMNodeList
Dim userbean As MSXML2.IXMLDOMNode
Dim beanChild As MSXML2.IXMLDOMNode
XMLDOC.Load ("https://www.catch.api")
r = 4
Set userBeanList = XMLDOC.SelectNodes("/response/responseBody/responseList/item[recordType='TPI']")
For Each userbean In userBeanList
For Each beanChild In userbean.ChildNodes
If beanChild.nodeName = "catch" Then GoTo NextIteration
Sheets("Sheet2").Cells(r, 1) = beanChild.nodeName
Sheets("Sheet2").Cells(r, 2) = beanChild.Text
r = r + 1
NextIteration:
Next beanChild
Next userbean
目前我正在遍历所有节点,然后在这种情况下忽略名为“catch”的节点,然后进入下一次迭代,因为我不需要该节点或节点值。 而不是这样做,我将如何将我的循环更改为一个我可以直接转到感兴趣的节点的循环,因此不必跳过似乎效率低下的迭代?
/////在冻糕的帮助下
Dim userBeanList As MSXML2.IXMLDOMNodeList
Dim userbean As MSXML2.IXMLDOMNode
Dim beanChild As MSXML2.IXMLDOMNode
XMLDOC.Load ("http://www.catch.api")
r = 4
Set userBeanList = XMLDOC.SelectNodes("/response/responseBody/responseList/item[recordType='TPI']/*[not(local-name)='catch']")
For Each userbean In userBeanList
Sheets("Sheet2").Cells(r, 1) = userbean.nodeName
Sheets("Sheet2").Cells(r, 2) = userbean.Text
r = r + 1
Next userbean
【问题讨论】:
-
把它说成 beanChild.nodeName "catch" 然后做一些事情可能会更高效一些