hoge.xmlなどのxmlファイルをjsonへ変換する方法は簡単に見つかったのですが、
通信結果などのレスポンスの生xml(表現あってんのか?)jsonに変換する方法があまり引っかからなかったのでメモ。
AmazonのProduct Advertising APIのレスポンスがxmlだったので使うことになりました。
JSONICをインポート
こちらからダウンロードできます。
ダウンロードしたjarファイルは、libフォルダに入れてください。
JSONICのメソッドは
JSON.encode(Document docment)
を利用します。
サンプルコード
staticメソッドですのでこのままコピペで動きます。
引数や返り値は適宜変更してください。
public static JSONArray responseToJson(HttpResponse res) { if (res == null){ return null; } HttpEntity httpEntity = res.getEntity(); JSONArray jsonArray = null; try { String xml = EntityUtils.toString(httpEntity, "UTF-8"); Log.d("convert", "xml= "+ xml); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("UTF-8")))); String json = JSON.encode(doc); Log.d("convert", "json= "+ json); jsonArray = new JSONArray(json); } catch (JSONException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return jsonArray; }
参考
JSONIC - simple json encoder/decoder for java
StackOverFlow java.net.MalformedURLException: no protocol