2016-05-09 15 views
1

子ノードを持つルートノードを持つxmlファイルがあり、その子ノードは自分自身の子ノードを持ち、他の子ノードを持ちます。VBScript:vbscriptを使用してxmlファイルのサブノードに動的に反復する方法

<parent> 
    <child1> 
     <child2> 
      <child3> 
      </child3> 
     </child2> 
    </child1> 
</parent> 

問題を次のようにchild1のように親とchild2のの子供がchild1のの子というように

構造されていることは、私は子ノードのノードすなわち数内のネストのレベルを知らないということです現在、私はこのVBScriptコード

set x=xmlDoc.documentElement 
msgbox "Nodename: " & x.nodeName & vbNewLine 
set y=x.childNodes 

for i=0 to y.length-1 
msgbox "Nodename: " & y(i).nodeName & vbNewLine 

for z=0 to y(i).childNodes.length-1 
    msgbox "Nodename: " & y(i).childNodes(z).nodeName & vbNewLine 
next 
next 

しかし、Fを使用しています、私は動的にXMLファイルから

をノードを読みたい1つのノード またはこれは事前に知るためにネスティングのレベルが必要であり、したがってループの数が必要とされる。 例:上記のコードでは、child2を読み取るためにchild1まで読み取ることができます。もう1つのループを追加する必要があるため、child3の場合はもう1つのループが必要です。 誰でも助けてくれますか?

+0

それは 'IXMLDOMNodeNode.hasChildNodes()=は' true'を渡し、再びこの時間を再帰関数を呼び出すたび入力、だとして、あなたは 'IXMLDOMNodeList'を受け入れる再帰関数をしたいですChildNodes''IXMLDOMNodeList'を入力として使用します。 – Lankymart

+0

XML文書を再帰的に反復する方法の例は、ここで見つけることができます[Recurse XML file using vbscript](http://stackoverflow.com/a/14987356/692942)。 – Lankymart

+0

どのようにサラムに乗りましたか?提案は役に立ちましたか? – Lankymart

答えて

1

上記の私のコメントから、簡単にしたいのですが、recursive functionは次のようなものから出発点です。

Dim xml: xml = "<parent><child1><child2><child3></child3></child2></child1></parent>" 
Dim xmldoc : Set xmldoc = CreateObject("Msxml2.DOMDocument.6.0") 

If xmldoc.LoadXML(xml) Then 
    Call MapNodes(xmldoc) 
End If 

'Recursive sub procedure that takes a Node as input. 
Sub MapNodes(CurrentNode) 
    Dim Node 

    If IsObject(CurrentNode) Then 
    If CurrentNode.HasChildNodes() Then 
     For Each Node In CurrentNode.childNodes 
     WScript.Echo "<" & Node.nodeName & ">" 
     'Do we have ChildNodes? Call the procedure again this time 
     'passing the Node we are currently checking. 
     If Node.HasChildNodes() Then Call MapNodes(Node) 
     WScript.Echo "</" & Node.nodeName & ">" 
     Next 
    End If 
    End If 
End Sub 

出力:

<parent> 
<child1> 
<child2> 
<child3> 
</child3> 
</child2> 
</child1> 
</parent> 
関連する問題