2016-05-28 1 views
0

Я пытаюсь получить узлы типа ERAD из длинного списка Erad узлов нашли в моем XMLполучить все узлы одного и того же типа

Вот мой код, чтобы получить первый пункт Erad

Как я бы это изменил, чтобы получить все стихи из КАЖДОГО предмета. XML является регулярным повторяющимся узором

Sub Macro1() 
Dim strUrl As String 
Dim strXPathBase As String 

Dim objDoc As Object 
Set objDoc = CreateObject("MSXML2.DOMDocument") 

strUrl = "https://....XML" 

objDoc.async = False 
objDoc.Load strUrl 

strXPathBase = "//response/responseBody/responseList/item/" 
Debug.Print "erad1: " & objDoc.SelectSingleNode(strXPathBase & "erad1").Text 


Set objDoc = Nothing 
End Sub 

ответ

1

Просто итерацию от своего родителя, <Item> и распечатать дочерние узлы <erad1>. Ниже используется раннее связывание объектов MSXML:

Sub Macro1() 

    Dim strUrl As String 
    Dim strXPathBase As String 
    ' ADD VBA REFERENCE: MICROSOFT XML, v6.0 ' 
    Dim objDoc As New MSXML2.DOMDocument60 
    Dim itemNode As MSXML2.IXMLDOMNodeList 
    Dim i As Variant 

    strUrl = "https://....XML" 

    objDoc.async = False 
    objDoc.Load strUrl 

    strXPathBase = "//response/responseBody/responseList/item"  
    Set itemNode = objDoc.DocumentElement.SelectNodes("strXPathBase") 

    For Each i in itemNode 
     Debug.Print "erad1: " & i.SelectSingleNode("erad1").Text 
    Next i 

    Set itemNode = Nothing 
    Set objDoc = Nothing 

End Sub