我有以下 XML。如果address component存在一個元素,該元素同時type具有值??為“sublocality”的type元素和值為“sublocality_level_1”的元素,那么我想address component為long_name.
在下面的示例 XML 中,這將是“Vleuten-De Meern”
我試過的:
Dim myXML As New XmlDocument
Dim responseString As String = "<GeocodeResponse><status>OK</status><result><type>political</type><type>sublocality</type><type>sublocality_level_2</type><formatted_address>De Meern, Utrecht, Netherlands</formatted_address><address_component><long_name>De Meern</long_name><short_name>De Meern</short_name><type>political</type><type>sublocality</type><type>sublocality_level_2</type></address_component><address_component><long_name>Vleuten-De Meern</long_name><short_name>Vleuten-De Meern</short_name><type>political</type><type>sublocality</type><type>sublocality_level_1</type></address_component><address_component><long_name>Utrecht</long_name><short_name>Utrecht</short_name><type>locality</type><type>political</type></address_component><address_component><long_name>Utrecht</long_name><short_name>Utrecht</short_name><type>administrative_area_level_2</type><type>political</type></address_component><address_component><long_name>Utrecht</long_name><short_name>UT</short_name><type>administrative_area_level_1</type><type>political</type></address_component><address_component><long_name>Netherlands</long_name><short_name>NL</short_name><type>country</type><type>political</type></address_component><geometry><location><lat>52.0757940</lat><lng>5.0319779</lng></location><location_type>APPROXIMATE</location_type><viewport><southwest><lat>52.0714898</lat><lng>5.0196140</lng></southwest><northeast><lat>52.0904459</lat><lng>5.0484669</lng></northeast></viewport><bounds><southwest><lat>52.0714898</lat><lng>5.0196140</lng></southwest><northeast><lat>52.0904459</lat><lng>5.0484669</lng></northeast></bounds></geometry><place_id>ChIJx5fkM1RlxkcR_pIQJLtl5Ro</place_id></result></GeocodeResponse>"
myXML.LoadXml(responseString)
If myXML.SelectSingleNode("GeocodeResponse/result[address_component[type[. = 'sublocality']] and address_component[type[. = 'sublocality_level_1']]]") IsNot Nothing Then
Log("found")
neighborhood = myXML.SelectSingleNode("GeocodeResponse/result[address_component[type[. = 'sublocality']] and address_component[type[. = 'sublocality_level_1']]]/long_name").InnerText
Else
Log("NOT found")
End If
找到該元素,記錄一個值“找到”,但是當我想檢索我得到的值時:
“你呼叫的物件是空的。”
<GeocodeResponse>
<status>OK</status>
<result>
<type>political</type>
<type>sublocality</type>
<type>sublocality_level_2</type>
<formatted_address>De Meern, Utrecht, Netherlands</formatted_address>
<address_component>
<long_name>De Meern</long_name>
<short_name>De Meern</short_name>
<type>political</type>
<type>sublocality</type>
<type>sublocality_level_2</type>
</address_component>
<address_component>
<long_name>Vleuten-De Meern</long_name>
<short_name>Vleuten-De Meern</short_name>
<type>political</type>
<type>sublocality</type>
<type>sublocality_level_1</type>
</address_component>
<address_component>
<long_name>Utrecht</long_name>
<short_name>Utrecht</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Utrecht</long_name>
<short_name>Utrecht</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Utrecht</long_name>
<short_name>UT</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Netherlands</long_name>
<short_name>NL</short_name>
<type>country</type>
<type>political</type>
</address_component>
<geometry>
<location>
<lat>52.0757940</lat>
<lng>5.0319779</lng>
</location>
<location_type>APPROXIMATE</location_type>
<viewport>
<southwest>
<lat>52.0714898</lat>
<lng>5.0196140</lng>
</southwest>
<northeast>
<lat>52.0904459</lat>
<lng>5.0484669</lng>
</northeast>
</viewport>
<bounds>
<southwest>
<lat>52.0714898</lat>
<lng>5.0196140</lng>
</southwest>
<northeast>
<lat>52.0904459</lat>
<lng>5.0484669</lng>
</northeast>
</bounds>
</geometry>
<place_id>ChIJx5fkM1RlxkcR_pIQJLtl5Ro</place_id>
</result>
</GeocodeResponse>
uj5u.com熱心網友回復:
您的路徑似乎錯誤,是;long_name的孩子 address_component因此,請確保您選擇了該路徑并且不要將相關元素放入謂詞中,例如
Dim name = myXML.SelectSingleNode("GeocodeResponse/result/address_component[type[. = 'sublocality'] and type[. = 'sublocality_level_1']]/long_name")
If name IsNot Nothing Then
Console.WriteLine("Found: {0}.", name.InnerText)
Else
Console.WriteLine("Not found.")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/503731.html
