2016-02-12 30 views
5

Chiunque può suggerire il modo migliore per saltare la prima occorrenza del primo nodo di un XML e avviare l'iterazione dal secondo nodo. Nell'esempio seguente, voglio saltare la prima occorrenza del nodo "parola" e iniziare l'iterazione della seconda occorrenza del nodo "parola". Grazie in anticipo.Salta il primo nodo e itera dal secondo nodo di un xml in VBS

<words> 
<word> 
    <name>Vowel</name> 
</word> 
<word> 
    <value>a</value> 
</word> 
<word> 
    <value>Vowel</value> 
</word> 
</words> 

risposta

1

I nodi figlio di un nodo vengono raccolti nella sua raccolta childNodes. Per saltare i nodi è necessario eseguire il loop sui childNodes per numero/indice invece del più frequente per ciascun approccio. In Codice:

Option Explicit 

Dim sXPath : sXPath = "/words" 
Dim oXDoc : Set oXDoc = CreateObject("Msxml2.DOMDocument.6.0") 
oXDoc.setProperty "SelectionLanguage", "XPath" 
oXDoc.async = False 
oXDoc.load "35359922.xml" 

If 0 = oXDoc.ParseError Then 
    Dim ndWords : Set ndWords = oXDoc.selectSingleNode(sXPath) 
    If ndWords Is Nothing Then 
     WScript.Echo "|", sXPath, "| not found" 
    Else 
     WScript.Echo "found " & ndWords.childNodes.length & " nodes." 
     Dim i 
     For i = 1 To ndWords.childNodes.length - 1 
      WScript.Echo i, ndWords.childNodes(i).text 
     Next 
    End If 

Else 
    WScript.Echo oXDoc.ParseError.Reason 
End If 

uscita:

cscript 35359922.vbs 
found 3 nodes. 
1 a 
2 Vowel 
+0

apprezzare la vostra soluzione, grazie. –