

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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- Ruby pythonエラー 4 2022/11/11 19:12
- 計算機科学 Pythonに関する質問です。 1 2022/12/04 10:55
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「取得先」という表現について
-
ps3で久しぶりにCDの音楽情報取...
-
ExcelVBAで、FileSystemObject...
-
JSON形式のデータを表示したい
-
Macアドレスの取得方法
-
EXCEL、マクロ-改ページ行番号...
-
Yahoo! のトップページのような...
-
拡張子とは
-
comboBoxのファイル取得とPictu...
-
google Analytics モバイル用...
-
商品のキャンペーンでサイトか...
-
【PHP】APIやRSSが存在しないサ...
-
個人向けルーターを使用してもS...
-
format関数について
-
VB.NETでボリュームを取得・設...
-
テーブルのデータをプルダウン...
-
他アプリケーションのアイコン...
-
Windows NT4.0 と 2000 のCP...
-
PHPでホームページの情報取得に...
-
PHP の cURL で、htmlを画像へ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「取得先」という表現について
-
コンビニで住民票を取得した場...
-
Yahoo! JAPAN IDを新規取得でき...
-
EXCEL、マクロ-改ページ行番号...
-
Excel VBA:特定の文字列以降(...
-
VBS「開いているページ」のURL...
-
【C#】FindWindowExの使い方を...
-
ps3で久しぶりにCDの音楽情報取...
-
IPアドレスとMACアドレスを取得...
-
ローカルのコンピュータ名を取...
-
VBAでPDFのアクティブページ番...
-
VB.NETでボリュームを取得・設...
-
アメブロでテーマを指定したRSS...
-
DMMの動画を全件取得したのです...
-
(Win32)ファイルパスから物理ド...
-
【VBA】EXCELブックを開かずに...
-
各クライアントマシンのログイ...
-
VB or VBScriptでPCの製造番号...
-
format関数について
-
PHPを使って、別サイトの一部を...
おすすめ情報