我正在使用 Java 和 XStream 通过 http 解析谷歌地理编码请求。我的想法是拥有一个包含所有地理编码属性(即纬度/经度、城市、省/州等)的地址类,但我在使用 xstream 解析 xml 时遇到问题。
谷歌的回应与此类似:
<?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0"><Response>
<name>98 St. Patrick St, Toronto</name>
<Status>
<code>200</code>
<request>geocode</request>
</Status>
<Placemark id="p1">
<address>98 St Patrick St, Toronto, ON, Canada</address>
<AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"> <Country><CountryNameCode>CA</CountryNameCode><CountryName>Canada</CountryName><AdministrativeArea><AdministrativeAreaName>ON</AdministrativeAreaName><Locality><LocalityName>Toronto</LocalityName><Thoroughfare><ThoroughfareName>98 St Patrick St</ThoroughfareName></Thoroughfare><PostalCode><PostalCodeNumber>M5T</PostalCodeNumber></PostalCode></Locality></AdministrativeArea></Country></AddressDetails>
<ExtendedData>
<LatLonBox north="43.6560378" south="43.6497426" east="-79.3864912" west="-79.3927864" />
</ExtendedData>
<Point><coordinates>-79.3896388,43.6528902,0</coordinates></Point>
</Placemark>
</Response></kml>
这并没有很好地显示出来,但代码的核心在 AddressDetails 标记中。
无论如何,我是 Java 和 XStream 的新手,所以 API 术语对我来说有点混乱。我只需要能够编写一些映射器,将所有这些标签(即 CountryName)映射到我的地址对象中的一个属性,(即 address.country = blah)地址对象将非常简单,主要只是国家的字符串名称等并浮动纬度/经度。
文档和示例仅显示直接映射,其中每个 xml 标记直接映射到对象的同名属性。但是,在我的情况下,标签的名称与对象 attr 的名称不同。一个正确方向的快速点是我真正想要的。