我试图从 XML 文档中选择一个节点 selectSingleNode()
然后使用 selectNodes
在该节点上进一步选择该节点的子项:
option explicit
sub main() ' {
dim doc as new MSXML2.DOMDocument
doc.loadXML( _
"<items>" & _
" <item id='1000'><name val='ABC'/><name val='DEF'/><name val='GHI'/><foo>xxx</foo></item>" & _
" <item id='1001'><name val='JKL'/><name val='MNO'/><name val='PQR'/><bar>yyy</bar></item>" & _
" <item id='1002'><name val='STU'/><name val='VWX'/><name val='YZ.'/><baz>zzz</baz></item>" & _
"</items>")
dim item as msxml2.IXMLDOMElement
set item = doc.selectSingleNode("//item[@id='1002']")
dim names as msxml2.IXMLDOMSelection
set names = item.selectNodes("//name")
dim name as msxml2.IXMLDOMElement
for each name in names
debug.print(name.getAttribute("val"))
next name
end sub ' }
我预计这段代码会打印属性值 STU
, VWX
和YZ.
。但是,当运行它时,它会打印每个 <name>
的val
值。
显然,selectNodes()
从根文档中选择所有节点。
我不明白为什么会这样,以及如何获取先前选择的节点的真实子节点。
最佳答案
改变
Set names = item.selectNodes("//name")
至
Set names = item.SelectNodes("name")
关于xml - 使用 selectSingleNode 选择节点后如何迭代节点的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54036433/