2016-12-21 12 views
0

のリストから、最初のノードの名前項目属性リスト内の各ノードに対して '? 私は親が1つのノードだけであることを知っているので、私はこれを使う必要があり、新しい変数( 'ノード')を定義しなければならないと愚かなようです。
助けてくれてありがとう!取得には、以下のコードは、これを出力しますノード

VBA:

Dim xDoc As DOMDocument 
    Set xDoc = New DOMDocument 
    xDoc.Load ("C:\....\example2.xml") 
    Set list = xDoc.SelectNodes("/animal/cat[(@ID)=""17""]") 
    Dim attr As IXMLDOMAttribute 
    Dim node As IXMLDOMNode 
    Dim childNode As IXMLDOMNode 

    For Each node In list 
     Debug.Print node.Attributes.getNamedItem("Name").Text 
    Next node 

XML:

<animal> 
      <dog ID="16" Name="Lucy"/> 
      <cat ID="156" Name="Chloe"/> 
      <cat ID="17" Name="GAL"> 
       <child ID="173" Name="Tigger"/> 
       <child ID="1256" Name="Angel"/> 
       <child ID="256" Name="Peanut"/> 
      </cat> 
      <cat ID="18" Name="Charlie"> 
       <child ID="173" Name="Smokey"/> 
      </cat> 
    </animal> 

答えて

3

あなたが本当に持っている場合、私は、あなたが新しい質問を開いた理由、これはとにかく昨日のRead XML child node Attribute on VBA with oDOC

を再訪されたかわかりません1つの項目を実行しているループの問題(率直に言って、わからない)listオブジェクトのlengthを調べることができます。

If list.length=1 Then 
    List.item(0).Attributes.getNamedItem("Name").Text 
Else 
    'Do the loop 
End If 

forループが1つのアイテムに対して実行されることを期待しているというコメントを追加できませんか?あなたのコード

Sub Tst() 


    Dim xDoc As MSXML2.DOMDocument60 
    Set xDoc = New MSXML2.DOMDocument60 
    xDoc.Load ThisWorkbook.Path & "\example2.xml" '<---- my path is different 

    Dim oSingular As MSXML2.IXMLDOMNode 
    Set oSingular = xDoc.SelectSingleNode("/animal/cat[(@ID)=""17""]") 

    Debug.Print oSingular.Attributes.getNamedItem("Name").Text 

' Set List = xDoc.SelectNodes("/animal/cat[(@ID)=""17""]") 
' Dim attr As IXMLDOMAttribute 
' Dim node As IXMLDOMNode 
' Dim childNode As IXMLDOMNode 
' 
' For Each node In List 
'  Debug.Print node.Attributes.getNamedItem("Name").Text 
' Next node 


End Sub 
+0

ええ、私はすでに は、私は2つの異なるコードをマージする方法私の心を吹いてる、まだそのためにどんな答えを見つけることができなかった、それについて尋ねるの書き換え

。 私が持っている最初のミッションは、ID 17(Tigger、angel、peaunut)のネコの名前を表示することです。xDocでそれを行う方法はわかっています。コードの他の場所でも、Id = 173 "とこれも私はoDocでやっている、私は必死に彼らをマージするtryngだ、私は2回、すべての答えを読み込むしたくないと私はまだ何をすべきかを取得しない – David

+1

私はなぜ理解していないあなたには2つの書類があります。質問を編集して、アクティブなツール参照を表示してください。昨日のように、私は最新のライブラリMicrosoft Xml 6.0に固執することをお勧めします。また、 'Dim'ステートメントを完全に修飾するようにコードを編集して、' Dim foo as MSXML2.DomDoucment60' –

+0

あなたの答えはどうやって単数形ですか? – David

関連する問題