2013-01-11 75 views
0

我試圖使用XPath和填充與這些值的訪問數據庫中的字段從XML文檔拉動地址信息。我能得到我需要的一切,直到我必須使用謂詞(我認爲這是做它的方式)。這裏是一個XML的示例:XPath,Acess和VBA。謂詞使用

<GeocodeResponse> 
<status>OK</status> 
<result> 
<type>street_address</type> 
<formatted_address> 
Street Number Street Address, Kansas City, MO 64120, USA 
</formatted_address> 
<address_component> 
<long_name>Street Number</long_name> 
<short_name>Street Number</short_name> 
<type>street_number</type> 
</address_component> 
<address_component> 
<long_name>Street Address</long_name> 
<short_name>Street Address</short_name> 
<type>route</type> 
</address_component> 
<address_component> 
<long_name>Kansas City</long_name> 
<short_name>KCMO</short_name> 
<type>locality</type> 
<type>political</type> 
</address_component> 

我想拉街道號,名稱和城市的文本。這裏是我在我的VBA代碼:

rst.Edit 
rst("Str_Num").Value =.SelectSingleNode("GeocodeResponse/result/address_component/long_name[1]").Text 
rst.Update 
rst.Edit 
rst("Str_Name").Value =SelectSingleNode("GeocodeResponse/result/address_component/long_name[2]").Text 
rst.Update 
rst.Edit 
rst("City").Value =SelectSingleNode("GeocodeResponse/result/address_component/long_name[3]").Text 
rst.Update 
rst.Edit 
rst("Zip").Value =SelectSingleNode("GeocodeResponse/result/address_component/long_name[8]").Text 
rst.Update 

當運行時,我得到錯誤91對象變量或未設置塊變量。

略高於這個代碼工作,因爲我預料到,但我有理解的謂詞的問題。上面的代碼:

rst.Edit 
rst("frm_addr").Value = .SelectSingleNode("//formatted_address").Text 
rst.Update 
rst.Edit 
rst("lat").Value = .SelectSingleNode("//location/lat").Text 
rst.Update 
rst.Edit 
rst("lng").Value = .SelectSingleNode("//location/lng").Text 
rst.Update 

那麼我有什麼錯?

謝謝!

回答

2

每個結果有幾個address_components標記,而不是幾個long_name s每address_component。修改您的XPath表達式爲

GeocodeResponse/result/address_component[1]/long_name 

等等。