掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
XPathで属性値によって要素を選択するには (ID:103084)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ユーザが設定したidの値に基づいて、そのidの要素・属性値を すべて取得させる目的で下記のようなVBAを組んでみました。 各属性値を読み込む際に、idの値によって判定し、一致する場合には値を取得します。 しかし、XPath式の設定方法が良くないようで、うまく属性値を取得できません。 XPath式に変数を入れることは出来ないでしょうか。 また、他に効率の良い組み方はありますでしょうか。 'Xに、/AAAA/BBBB[@id="1"]/CCCC/@DDDDの値(175)を取り込むコード Private Sub CommandButton1_Click() Dim DOM As MSXML2.DOMDocument Dim ID As Double Set DOM = New MSXML2.DOMDocument DOM.async = False DOM.Load ("c:\sample.xml") ID = Range("a1") 'Range("a1") = 1 For Each Node In DOM.SelectNodes("//AAAA/BBBB[@id = ID]/CCCC/@DDDD") 'とすると、Xは空のまま。 'For Each Node In DOM.SelectNodes("//AAAA/BBBB[@id = 1]/CCCC/@DDDD") とすると、Xに属性値(175)が読み込まれる。 'For Each Node In DOM.SelectNodes("//AAAA/BBBB[@id = '1']/CCCC/@DDDD") とすると、Xに属性値(175)が読み込まれる。 X = Node.Value Next MsgBox X End Sub <!--- c:\sample.xml ---> <?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?> <AAAA> <BBBB id="1"> <CCCC DDDD="175" EEEE="600" FFFF="1200"> <GGGG> <HHHH XXXX="0.3" YYYY="0.00083" ZZZZ="0.00083"/> <IIII XXXX="0.4" YYYY="0.00073" ZZZZ="0.00083"/> <!--- 中略 ---> </GGGG> </CCCC> </BBBB> <BBBB id="2"> <CCCC DDDD="150" EEEE="600" FFFF="1200"> <GGGG> <HHHH XXXX="0.3" YYYY="0.00083" ZZZZ="0.00083"/> <IIII XXXX="0.4" YYYY="0.00073" ZZZZ="0.00083"/> <!--- 中略 ---> </GGGG> </CCCC> </BBBB> <!--- 中略 ---> </AAAA>
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.