VBA从第一个节点开始(如果存在) - 使用If Is Nothing

时间:2015-04-19 20:22:22

标签: xml vba dom xml-parsing

如何从第一个节点开始递增从第一个到最后一个节点并应用:

For Each n In XMLFile.SelectNodes("/catalog/book")
    If XMLFile.SelectSingleNode("/catalog/book/banana") Is Nothing Then
        MsgBox ("banana not here")
    Else
        MsgBox ("banana found")
    End If
Next

香蕉在第一本书中不存在:

?xml version="1.0"?>
<catalog>
<book id="Adventure">
   <author>Ralls, Kim</author>
   <title>XML Developer's Guide</title>
   <price>44.95</price>
</book>
<book id="Adventure">
   <author>Ralls, Kim</author>
   <title>Midnight Rain</title>
   <price>5.95</price>
   <banana>ring</banana>
</book>
<book id="Adventure">
   <author>Ralls, Kim</author>
   <title>Mist</title>
   <price>15.95</price>
   <banana>ring</banana>
</book>
<book id="Mystery">
   <author>Ralls, Kim</author>
   <title>Some Mystery Book</title>
   <price>9.95</price>
   <banana>ring</banana>
</book>
</catalog>

电流输出: “香蕉发现” “香蕉发现” “香蕉发现” “香蕉发现”

1 个答案:

答案 0 :(得分:2)

您只是从顶级节点再次重复搜索...

If XMLFile.SelectSingleNode("/catalog/book/banana") Is Nothing Then

...所以你总是得到第一个香蕉节点。你需要在'n'上操作,而不是'XMLFile':

If n.SelectSingleNode("banana") Is Nothing Then

请记住,您正在遍历层次结构。