

VB2005、XML の初心者です。
VB2005でXMLデータをMSXMLで解析していますが、下記のようなXMLの場合、Itemがうまく解析できません。
Module > Parent > Item という親子関係ですが、
全て数は可変です。(子がない場合もあります。)
<Body>
<Content>
<Module>
</Module>
<Module>
<Parent>
<Item>A</Item>
</Parent>
</Module>
<Module>
<Parent>
<Item>AA</Item>
<Item>BB</Item>
<Item>CC</Item>
</Parent>
</Module>
<Module>
</Module>
</Content>
</Body>
ソースは下記です。
Dim LmsxmlDoc As MSXML2.DOMDocument
LmsxmlDoc = New MSXML2.DOMDocument
LmsxmlDoc.LoadXml(XMLData)
Dim LModules As MSXML2.IXMLDOMNodeList
'下記Moduleは取得できる
LModules = LmsxmlDoc.SelectNodes("/Body/Content/Module")
Dim LItems As MSXML2.IXMLDOMNodeList
Dim LmsxmlModule As MSXML2.DOMDocument
LmsxmlModule = New MSXML2.DOMDocument
For Each LModule As MSXML2.IXMLDOMNode In LModules
'下記(1)でも(2)でもItemが取得できない
(1)LItems = LModule.selectNodes("/Module/Parent/Item")
LmsxmlModule.LoadXml(LModule.Xml)
(2)LItems = LmsxmlModule.selectNodes("/Module/Parent/Item")
For Each LItem As MSXML2.IXMLDOMNode In LItems
'処理
Next
Next
上記ソースでは、(1)、(2)のどちらの方法でもなぜかItemが取得できません。
Itemを取得するにはどうすれば良いのでしょうか。
ヒントでも良いので、皆様の知恵をお借りできれば幸いです。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
存在したりしなかったりならその実情に合わせて オブジェクトを取得しないといけないようです
Moduleまで存在が確実なら selectNodes("/Body/Cotent/Module")で取得は出来ますよね
これ以後ですが
ModuleレベルのDOMDocument … docModule
ParentレベルのDOMDocument … docParent
ItemレベルのDOMDocument … docItem
の3種類が必要だともいます
docModule.loadXML( LModule.xml )
でDOMDocumentを取得
' Parentのリストを取得
oParentList = docModule.selectNodes("/Module/Parent")
if oParentList.Length then
' Parentのノードを取得
For each oParentNode in oListParent
' ノードをドキュメントへ
docParent.loadXML( oParentNode.xml )
' Itemリストを取得
oItemList = docParent.selectNodes("/Parent/Item")
If oItemList.Length then
' Itemノードを取得
for each oItemNode in oListItem
MsgBox( oItemNode.Text )
といった具合でしょう ・・・ 各変数の宣言などは行ってください
早速の回答ありがとうございます!!
教えていただいたやり方できました。
一旦オブジェクトを取得しないといけないんですね。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「取得先」という表現について
-
Excel VBA:特定の文字列以降(...
-
VBAでPDFファイルの文書のプロ...
-
ps3で久しぶりにCDの音楽情報取...
-
テレビ番組表
-
自動車教習所について 質問 普...
-
先日NISAの投資信託で、初めて...
-
Webサイト更新日を知る方法
-
DMMの動画を全件取得したのです...
-
コンビニで住民票を取得した場...
-
VBブラウザに表示されているテ...
-
Yahoo! JAPAN IDを新規取得でき...
-
findstrのerrorlevel
-
wordの差し込み印刷で文字...
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
クリップボード画像転送方法
-
DTOとEntityの差は何ですか。
-
Dosブロンプトでtabを出力したい
-
ActiveReportのサブレポート機...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「取得先」という表現について
-
Excel VBA:特定の文字列以降(...
-
コンビニで住民票を取得した場...
-
EXCEL、マクロ-改ページ行番号...
-
Yahoo! JAPAN IDを新規取得でき...
-
ps3で久しぶりにCDの音楽情報取...
-
スクレイピングに適した言語を...
-
VB+SQLserverでRecordCount問題
-
format関数について
-
IPアドレスとMACアドレスを取得...
-
VBAでPDFのアクティブページ番...
-
PHPを使って、別サイトの一部を...
-
【VBA】EXCELブックを開かずに...
-
IPアドレス変更方法
-
VB.NETでボリュームを取得・設...
-
ログイン処理を自動で行い、目...
-
VB2005でXMLデータから複数ある...
-
curlで取得出来るデータの制限...
-
グーグルページランクの取得方法
-
アメブロでテーマを指定したRSS...
おすすめ情報