This example demonstrates using XMLBeam without a projection interface.
The postal code is stored in one of many address_component elements. With data binding you would need to iterate over all of these elements to find the one containing the postal code.
<? xml version = "1.0" encoding = "UTF-8" ?> < GeocodeResponse > < status >OK</ status > < result > < type >route</ type > < formatted_address >Infinite Loop, Cupertino, CA 95014, USA</ formatted_address > < address_component > < long_name >Infinite Loop</ long_name > < short_name >Infinite Loop</ short_name > < type >route</ type > </ address_component > < address_component > < long_name >Cupertino</ long_name > < short_name >Cupertino</ short_name > < type >locality</ type > < type >political</ type > </ address_component > < address_component > < long_name >Santa Clara County</ long_name > < short_name >Santa Clara County</ short_name > < type >administrative_area_level_2</ type > < type >political</ type > </ address_component > < address_component > < long_name >California</ long_name > < short_name >CA</ short_name > < type >administrative_area_level_1</ type > < type >political</ type > </ address_component > < address_component > < long_name >United States</ long_name > < short_name >US</ short_name > < type >country</ type > < type >political</ type > </ address_component > < address_component > < long_name >95014</ long_name > < short_name >95014</ short_name > < type >postal_code</ type > </ address_component > < geometry > < location > < lat >37.3319426</ lat > < lng >-122.0307481</ lng > </ location > < location_type >GEOMETRIC_CENTER</ location_type > < viewport > < southwest > < lat >37.3305175</ lat > < lng >-122.0321699</ lng > </ southwest > < northeast > < lat >37.3334980</ lat > < lng >-122.0285561</ lng > </ northeast > </ viewport > < bounds > < southwest > < lat >37.3305175</ lat > < lng >-122.0321699</ lng > </ southwest > < northeast > < lat >37.3334980</ lat > < lng >-122.0285561</ lng > </ northeast > </ bounds > </ geometry > </ result > </ GeocodeResponse > |
You only need just one line of code to read the postal code. You do not need even a projection interface in this case.
public void postalCodeRetrieval() { String searchURL= "http://maps.google.com/maps/api/geocode/xml?address=Infinite%20Loop,%20Cupertino,%20CA%2095014,%20USA%22" ; String pathToElement= "/GeocodeResponse/result/address_component[type='postal_code']/long_name" ; long postalCode = new XBProjector().io().url(searchURL).evalXPath(pathToElement).as(Long.TYPE); assertEquals(95014L,postalCode); } |