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每个 s address_component。将您的 XPath 表达式修改为

GeocodeResponse/result/address_component[1]/long_name

等等。

于 2013-01-11T14:22:26.740 回答