こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB2005でXMLデータから複数ある要素の数を読み取る方法

VB2005、XMLの初心者です。

VB2005でXMLデータを読み取って、DBに登録するプログラムを作っています。
XMLデータから項目を読み取るのは、下記のようにパスを指定してできることが分りました。

CreatorInfodNode = xmlDoc.SelectNodes("/Mml/Body/Module", nsmgr1)
ID = CreatorInfodNode(0).InnerText.Trim

しかし、下記のような同じ要素が複数あるXMLデータの場合、全ての要素を解析してDBに登録したいのですが、要素の数はどうやって読み取れば良いのでしょうか。ちなみに、要素の数は可変です。
上記のパスを指定する場合、要素のタグが同じなら全てパスは同じになり、最初の要素を取ってくるようですが、複数ある場合は全てを解析したいです。

<Mml>
<Body>
<Module>A</Module>
<Module>B</Module>
<Module>C</Module>
</Body>
</Mml>

何かヒントになるようなことでも良いので、皆様の知恵をお借りできれば幸いです。
よろしくお願い致します。

投稿日時 - 2007-11-05 19:34:05

QNo.3491999

すぐに回答ほしいです

質問者が選んだベストアンサー

SelectNodesで取得したのはXmlNodeListですから Countプロパティが存在します
dim ID() as String
redim ID( CreateInfoNode.Count - 1)
for n=0 to CreateInfoNode.Count - 1
  ID(n) = CreateInfoNode(n).InnerText
Next
と言った具合で取得可能なのでは …

投稿日時 - 2007-11-05 22:08:04

お礼

早速のお返事ありがとうございます。
教えていただいたCountプロパティで取得できました。
ありがとうございました。

ちなみに、取得したCreatorInfodNode(n)の中の属性を取得したい場合は、どうすれば良いかご存知でしょうか。
例えば、下記XMLの場合、属性Typeによって後続の処理が異なるため、CreatorInfodNode(n)に取得してから属性Typeを取得したいのですが、どうすれば良いのでしょうか。

<Mml>
<Body>
<Module type=1>A</Module>
<Module type=1>B</Module>
<Module type=2>C</Module>
</Body>
</Mml>

追加で申し訳ありませんが、ご存知でしたら教えていただけたら幸いです。

投稿日時 - 2007-11-06 18:21:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

CreateInfoNode(n)が XmlNodeなので これのAttributesコレクションを見れば 属性指定があるかどうかの判断できそうです

CreateInfoNode(n).Attributes.Countが1以上であれば何かの属性つきだと判断できますよね

投稿日時 - 2007-11-06 19:04:20

お礼

度々のお返事、本当にありがとうございます。

教えていただいたAttributesコレクションでできました。
初歩的な質問でしたが、ありがとうございました。

投稿日時 - 2007-11-07 15:39:52

あなたにオススメの質問