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

解決済みの質問

VBScriptでXMLのデータを取得する方法

こんにちは。
プログラミング初心者です。どうぞよろしくお願いします。

VBSで下記のようなXMLのtitleをpub idごとに別々に分けて抽出したいのですが、どうしたらよいか全く分からない状態です。

<book>
<publisher>
<pub id="集英社"/>
</publisher>
<title>ドラゴンボール</title>
</book>
<book>
<publisher>
<pub id="講談社"/>
</publisher>
<title>はじめの一歩</title>
</book>
<book>
<publisher>
<pub id="集英社"/>
</publisher>
<title>ジョジョの奇妙な冒険</title>
</book>
<book>
<publisher>
<pub id="秋田書店"/>
</publisher>
<title>範馬刃牙</title>
</book>

下記のリンク先サイトにあったコードを試したのですが、titleが一緒くたに抽出されてしまい、別々に抽出ができません。pub idの階層が一つ深いのが原因だと思うのですが・・・どうしたらよいのか、さっぱり思いつきません。

http://www.atmarkit.co.jp/fxml/rensai/msxml01/msxml03.html

Dim objDOM, rtResult

Set objDOM = WScript.CreateObject("MSXML2.DOMDocument")
rtResult = objDOM.load("○○.xml")
If rtResult = True Then
procDispDatas objDOM.childNodes
End If
Set objDOM = Nothing

Sub procDispDatas(objNode)
Dim obj
For Each obj In objNode
If obj.nodeType = 3 and obj.parentNode.nodeName = "title" Then
MsgBox obj.parentNode.nodeName & " : " & obj.nodeValue
End If
If obj.hasChildNodes Then
procDispDatas obj.childNodes
End If
Next
End Sub

どうかアドバイスをよろしくお願いいたします!

投稿日時 - 2008-03-01 13:18:14

QNo.3822966

困ってます

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

XMLファイルのルートノードを追加したほうがいいように思います
出発点のノードが1つでそこから枝分かれするようにします

今回なら <book>タグの外側に<books>タグを追加します
<books>
<book>
<publisher>
<pub id="集英社"/>
</publisher>
<title>ドラゴンボール</title>
</book>
<book>
<publisher>
<pub id="講談社"/>
</publisher>
<title>はじめの一歩</title>
</book>
<book>
<publisher>
<pub id="集英社"/>
</publisher>
<title>ジョジョの奇妙な冒険</title>
</book>
<book>
<publisher>
<pub id="秋田書店"/>
</publisher>
<title>範馬刃牙</title>
</book>
</books>
と行った具合でやってみましょう

また先頭に XMLのバージョンやエンコード方式も追加した方がいいように思います
<?xml version="1.0" encoding="shift_jis" ?>
といった具合です

投稿日時 - 2008-03-02 00:49:57

お礼

アドバイスありがとうございます。
返事が遅くなってしまってすみませんでした!
いろいろ試してなんとかうまくいきました。
ありがとうございました!

投稿日時 - 2008-03-24 23:08:27

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

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

回答(1)

あなたにオススメの質問