次のようなxmlドキュメントがあります。
<rng>
<col1>
<row1>A</row1>
<row2>B</row2>
<row3>C</row3>
<row4>D</row4>
</col1>
<col2>
<row1>E</row1>
<row2>F</row2>
<row3>G</row3>
<row4>H</row4>
</col2>
</rng>
さらに多くの col ノードがあり、それぞれに数千の行要素が含まれています。
行要素から値を解析し、最終的にそれらをスプレッドシートに配置したいと思います。私は現在、次のようにこれを行っています:
' get a list of the col elements (thi sits in a loop to go through them all)
Set oXMLColNodeList = oXMLDoc.selectNodes("//saveStates/rng/*")
' Lop through each column
For colNum = 1 To oXMLColNodeList.Length
' get all the row nodes for that coulmn
Set oXMLRowNodeList = oXMLDoc.selectNodes("//saveStates/rng"/col" & colNum & "/*")
' loop through all the row nodes
For rowNum = 1 To oXMLRowNodeList.Length
' get the node to do something with it
Set oXMLNode = oXMLDoc.selectSingleNode("//saveStates/rng/col" & colNum & "/row" & rowNum)
next rowNum
next colNum
つまり、列ノードをループしてから、各行ノードを介して値 A、B、C、D などを取得しています。行要素の数が数万に達すると、壊滅的に遅くなります。
XML ドキュメントからの解析の経験はあまりありません。「row*」ノードからすべての値をループ処理せずに同時に抽出する方法を探しています。これは可能ですか?