2012-03-27 6 views
0

Webメソッドが呼び出された後、応答としてXML文字列が返されます。アンドロイド開発でWebサービスから返されたksoap2応答を解析するにはどうすればよいですか?

SoapPrimitive response = (SoapPrimitive) ws.envelope.getResponse(); 

とのようなXMLは次のとおりです: アンドロイド側のコードは、そのようなもので、私は緯度

    IDの数が
  1. 保存返さ
  2. を取得したい

    <string xmlns="http://tempuri.org/"> 
    [{"ID":"[email protected]","float_latitude":22.338,"float_longitude":114.169},   {"ID":"[email protected]","float_latitude":22.33974,"float_longitude":114.169456}, {"ID":"[email protected]","float_latitude":22.3384857,"float_longitude":114.1691}, {"ID":"[email protected]","float_latitude":50,"float_longitude":100}] 
    </string> 
    

    idと私のローカル変数の長さは同じです。

答えて

2

O男性。まずあなたの応答はXMLではなく、JSONです。私がJSONを構文解析する方法は、まずジェネリックオブジェクトを構築します。

public class yourObject{ 

    private String id; 
    private double lat; 
    private double lng; 
} 

そこからコレクションを構築するには、arraylistが問題ありません。

ArrayList<yourObject> objects = new ArrayList<yourObject>(); 

JSONについてのいくつかの調査では、いくつかのスターターコードがあります。

JSONArray myAwarry = new JSONArray(response); 

レスポンスなどのサーバから返される文字列を渡します。

反復配列による

for(int i = 0; i < myAwarry.length(); i++){ 
JSONObject o = myAwarry.get(i); 
yourObject obj = new yourObject(); 
obj.setId(o.getString("ID")); 
obj.setlat(o.getDouble("float_longitude")); 
obj.setlng(o.getDouble("float_latitude")); 
//add the obj to the collections of objects 
    objects.add(obj); 

}

希望これは、それが私のために完璧に動作

+0

役立ちます!私はksoap2 xmlを何度も解析し、xmlとjsonを混乱させた解決策cozを見つける方法を探しました。大変ありがとうございます – Chleung49

+0

問題はありませんでした。私は助けてくれてうれしいです。 – JakeWilson801