0

XPathを使用してXMLドキュメントからアドレス情報を取得し、アクセスデータベースのフィールドにこれらの値を入力しようとしています。述語を使用する必要があるまで、必要なものをすべて取得できます(これがその方法だと思います)。XMLのサンプルは次のとおりです。

<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

だから私は何が間違っているのですか?

ありがとう!

4

1 に答える 1

2

address_components結果ごとに複数のタグがあり、long_nameごとに複数のタグはありませんaddress_component。XPath式を次のように変更します

GeocodeResponse/result/address_component[1]/long_name

等々。

于 2013-01-11T14:22:26.740 に答える