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も見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
あるノードリストに、特定の名前のノードが存在するかどうか調べたい
XML
-
Excel-VBAでXMLの複数ノードの取り出し
Visual Basic(VBA)
-
vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業)
Visual Basic(VBA)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
VBS「開いているページ」のURL...
-
【VBA】EXCELブックを開かずに...
-
エクセルVBAにて同行内複数URL...
-
(Win32)ファイルパスから物理ド...
-
ImmGetConversionListについて
-
PHPを使って、別サイトの一部を...
-
アクセスの度にIPアドレスを変...
-
各クライアントマシンのログイ...
-
ミュージックのアートワークを...
-
C# ASP.NET でIPアドレスからア...
-
C#で特定LANアダプタの状態を取...
-
【C#】FindWindowExの使い方を...
-
curlで取得出来るデータの制限...
-
ドライブ文字からハードウェア...
-
ローカルのコンピュータ名を取...
-
築24年の中古住宅は住宅ローン...
-
ファイル名のリスト取得について
-
サブネットマスクの取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「取得先」という表現について
-
EXCEL、マクロ-改ページ行番号...
-
ps3で久しぶりにCDの音楽情報取...
-
築24年の中古住宅は住宅ローン...
-
ローカルのコンピュータ名を取...
-
format関数について
-
Excel VBA:特定の文字列以降(...
-
ミュージックのアートワークを...
-
Yahoo! JAPAN IDを新規取得でき...
-
【VBA】EXCELブックを開かずに...
-
(Win32)ファイルパスから物理ド...
-
アクセスの度にIPアドレスを変...
-
VBS「開いているページ」のURL...
-
IPアドレスとMACアドレスを取得...
-
VB or VBScriptでPCの製造番号...
-
【C#】FindWindowExの使い方を...
-
VBAでできますか?
-
各クライアントマシンのログイ...
-
VBSであるAD情報を取得したいで...
-
表示している画面サイズの取得方法
おすすめ情報