2016-02-12 10 views
5

XMLの最初のノードの最初の出現をスキップし、2番目のノードから反復を開始する最適な方法を提案できます。 以下の例では、ノード "word"の最初のオカレンスをスキップし、ノード "word"の2番目のオカレンスの繰り返しを開始します。前もって感謝します。最初のノードをスキップし、VBSのxmlの2番目のノードから反復する

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

答えて

1

ノードの子ノードは、そのchildNodesコレクションに収集されます。ノードをスキップするには、より頻繁なFor Eachアプローチではなく、number/indexでchildNodesをループする必要があります。コードでは:

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 

出力:

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

は、ソリューション、感謝を感謝しています。 –

関連する問題