dポイントプレゼントキャンペーン実施中!

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

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/ms …

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

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

A 回答 (1件)

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" ?>
といった具合です
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/24 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!