MS-Access VBAにてMSXML2.XMLHTTPを使ってwebサーバーにPOSTした結果を、MSXML2.DomDocumentで受けて処理しようとしています。
参照設定に、「Microsoft XML, v3.0」を加えています。
selectNodesメソッドを使って、特定の要素を読み出すというのを想定していて、こんなコードを書いています。
lang
1 (略) 2 Set xdoc = CreateObject("MSXML2.DOMDocument") 3 xdoc.async = False 4 xdoc.SetProperty "ServerHTTPRequest", True 5 xdoc.SetProperty "SelectionLanguage", "XPath" 6 7 result = xdoc.loadXML(HttpReq.responseText) 8 If result = False Then 9 ''(エラー処理、略) 10 End If 11 12 Set nodelist = xdoc.selectNodes("//div[@id='response']/p") 13
などとして、div要素のid属性にresponseを持った要素の下のp要素を特定したいのですが、ひっかからず、nodelist.lengthは常にゼロです。
SelectionLanguageをXPathにする行をコメントアウトして、
lang
1 Set nodelist = xdoc.selectNodes("/html/body/div/p")
などとするとかろうじて引っかかりますが、これだとXSLPatternってもので検索していることになるんでしょうか。
XMLやXPathに関する知識も付け焼き刃なので、何をどうしたら迷うところです。
1)webサーバーの応答を、完全にXMLで返す。(webブラウザでのデバッグどうするか?)
2)XSLPatternでもいいから、突き進む。
3)XPathで引っかかるように問題点を直す。
4)XMLパーサを使うのをやめて、HttpReq.responseTextをテキスト処理する。
XHTMLで返せば、webブラウザを使ってのデバッグもしやすいかなというところなので、なるべくXHTMLで返したいのですが、XMLパーサの使い方がわからないところもあり、難渋しています。
尚、webサーバーは既存のwebサービスからデータを引き出すものでなく、自前でこれから建てるものなので、プロトコル自体も調整できます。
仮に、FuelPHPで書いています。
何か間違っている箇所、点検するべきポイントなどありましたら、よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。