Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing external XML to JSON in Java?

Tags:

java

json

xml

sax

So I'm sitting here with Google Geocoder, which returns an XML via 'GOOGLE_URL/xml?address=input&sensor=false'. I need to fetch it by using Java and parse it into a JSON object and send it onwards.

How would I go about to do this? (No this is not homework) Note that it should preferably be done within the standard libraries. At the moment I'm trying to work out if it can be done with for example SAX.

like image 395
Mantar Avatar asked Jan 21 '23 09:01

Mantar


2 Answers

Here is a working example which shows how to connect to a URL, download XML and convert it to JSON format:

  1. Connect to a URL and download the XML as a string:

    String str = "http://maps.google.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true";
    URL url = new URL(str);
    InputStream is = url.openStream();
    int ptr = 0;
    StringBuilder builder = new StringBuilder();
    while ((ptr = is.read()) != -1) {
        builder.append((char) ptr);
    }
    String xml = builder.toString();
    
  2. Download the JSON library from here. (You will have to compile it and ensure that the classes are on your classpath.)

  3. Convert the XML into a JSON Object:

    JSONObject jsonObject = XML.toJSONObject(xml);
    System.out.println(jsonObject);
    
like image 190
dogbane Avatar answered Jan 28 '23 21:01

dogbane


Why don't you retrieve the Google geocode as JSON in the first place?

  • http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

The above link is taken directly from:

  • http://code.google.com/apis/maps/documentation/geocoding/#JSON
like image 37
bdoughan Avatar answered Jan 28 '23 21:01

bdoughan