VB6でXMLファイルからデータを取得するところで上手く行きません。
XML・・・
=================================================
<A>
<B>
<C X="0" y="0" />
</B>
</A>
<A>
<B>
<C X="1" y="1" />
</B>
</A>
<A>
<B>
<C X="2" y="2" />
</B>
</A>
=================================================
プログラム
Dim i As Integer
Dim XMLDocument As DOMDocument40
Dim xmlTarget_1 As IXMLDOMNodeList
Dim xmlTarget_2 As IXMLDOMNodeList
Set XMLDocument = CreateObject("MSXML2.DOMDocument.4.0")
Set xmlTarget_1 = XMLDocument.selectNodes("//A")
For i = 0 To 3 - 1 Step 1
Set xmlTarget_2 = xmlTarget_1.Item(i).selectNodes("//B")
Next i
このプログラムで、i=0 の1回目のループでxmlTarget_2は、
【私の思い】
1つ目の<A>内の<B>がitemとして取れる
xmlTarget_2.length = 1
ですが、
【実際】
xmlTarget_2.length = 3
となって、全ての<A>の中の<B>が取得されます。
後の、i=1、i=2も同じ値でした。
この例で3つある<A>をループの中で、それぞれの<B>を取りたいのですが、
間違いの指摘と、解決策を教えて下さい。
"//XXX" は、ドキュメントルートの XXX という名前を持つ子孫エレメント全てが対象になります。
コンテキストノード以下の子孫エレメントを対象としたいなら、コンテキストノードをちゃんと示して ".//XXX" とする必要があります。
// 子孫エレメントじゃなくて子エレメントで十分だと思います。
Hongliangさん
御指摘頂いたことを反映して上手く行く事ができました。
ありがとうございました。
構文のそれぞれの意味をしっかりと把握することなく、参考にしていた
ものを応用して使用していた為に、このような質問となってしまいました。
申し訳ありませんでした。
ツイート | ![]() |