2015-12-18 33 views
0

我必須將XMLnodelists合併爲一個。 所以我想oNodelist_B的內容複製到oNodeList_A在VBA中合併兩個XMLnodelist

Set oNodeList_A = xmldoc.getElementsByTagName("A") 
Set oNodeList_B = xmldoc.getElementsByTagName("B") 

人有一個想法?

+1

什麼是最終的目的是什麼?你想對這個聯合清單做什麼? –

+0

你好,原因是,我有一個工具,我需要更新。該工具分析oNodeList_A中的數據(該列表的輸入是一個XML文件)。更新我想要做的,以從xm文件中添加此列表中的不同數據。所以除了getElementByTagName(「A」),還有(「B」)。這就是爲什麼我想填充兩個不同的節點列表,然後將它們合併爲一個。也許你有想法做到這一點?或不同的解決方案 – Menno

+0

@TimWilliams請參閱上面的註釋 – Menno

回答

0

這個工作對我來說:

Sub Tester() 
    Dim xmlDoc As New MSXML2.DOMDocument30 
    Dim objNodes As IXMLDOMNodeList, o As IXMLDOMElement 

    xmlDoc.async = False 

    'xmlDoc.Load "D:\Analysis\config.xml" 
    xmlDoc.LoadXML Range("A1").Value 

    xmlDoc.setProperty "SelectionLanguage", "XPath" '<< required! 

    If xmlDoc.parseError.errorCode <> 0 Then 

    MsgBox "Error!" & vbCrLf & _ 
    " Line: " & xmlDoc.parseError.Line & vbCrLf & _ 
    " Text:" & xmlDoc.parseError.srcText & vbCrLf & _ 
    " Reason: " & xmlDoc.parseError.reason 

    Else 

    Set objNodes = xmlDoc.SelectNodes("root/A|root/B") 
    If objNodes.Length = 0 Then 
     Debug.Print "not found" 
    Else 
     For Each o In objNodes 
     Debug.Print o.tagName, o.nodeTypedValue 
     Next o 
    End If 

    End If 

End Sub 

測試XML:

<?xml version="1.0"?> 
<root> 
    <A>ValA1</A> 
    <A>ValA2</A> 
    <B>ValB1</B> 
    <B>ValB2</B> 
</root>