-1

データの配列セットをスローする Web サービスがあります。Ksoap を使用して、Web サービスからの応答を取得しています。

anyType{NewDataSet=anyType{Table=anyType{couponname=クーポン名; クーポン画像=画像; クーポンコード=コード; クーポンの説明=説明; クーポン開始日=開始日; クーポン終了日=終了日; ID=1; }; Table=anyType{クーポン名=クーポン名1; クーポン画像=画像; クーポンコード=コード1; クーポン説明=説明1; クーポン開始日=開始日1; クーポン終了日=終了日1; ID=2; }; Table=anyType{クーポン名=クーポン名2; クーポン画像=画像; クーポンコード=コード2; クーポン説明=説明2; クーポン開始日=開始日2; クーポン終了日=終了日2; ID=3; }; }; }

この応答を解析する方法について、誰かがチュートリアルや提案をすることはできますか? どんな考えでも大歓迎です。

4

1 に答える 1

2

はい、次のようにできます:

あなたの応答が次のように似ている場合:

anyType{
    StatusSetting=anyType{Id=1; Name=Til afskrivning; LocationId=1; Editable=true; Default=true; Transcribed=false; }; 
    StatusSetting=anyType{Id=2; Name=Afskrevet; LocationId=1; Editable=false; Default=false; Transcribed=true; }; 
    ...
}

次に、次のようにする必要があります。

SoapObject countryDetails = (SoapObject)envelope.getResponse();
System.out.println(countryDetails.toString());

ArrayList list = new ArrayList(countryDetails.getPropertyCount());
lv_arr = new String[countryDetails.getPropertyCount()];
for (int i = 0; i < countryDetails.getPropertyCount(); i++) {
    object property = countryDetails.getProperty(i);
    if (property instanceof SoapObject) {
        SoapObject countryObj = (SoapObject) property;
        String countryName = countryObj.getProperty("countryName").toString();
        list.add(countryName );
    }
}

この例で理解できる場合は、お知らせください。それ以外の場合は、応答のデータの解析コードをお送りします。

またはその他:

以下を追加するだけで、soap オブジェクトから XML 応答を取得できます。

androidHttpTransport.debug = true;

次のように呼び出す前に:

androidHttpTransport.call(SOAP_ACTION, envelope);

そして追加:

String xml = androidHttpTransport.responseDump;

電話の後。

そして、XML 出力を文字列 XML で取得します。したがって、任意の (DOM、xmlpull、または SAX) パーサーを使用して解析できます。

次のコードに従って、タスクを達成できます。

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
// Add the input required by web service
request.addProperty("city","chennai");
request.addProperty("key","10000");

SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);

// Make the soap call.
androidHttpTransport.call(SOAP_ACTION, envelope);

// Get the SoapResult from the envelope body.
resultRequestSOAP = (SoapObject) envelope.bodyIn;


System.out.println("********Response : "+resultRequestSOAP.toString());

SoapObject root = (SoapObject) resultRequestSOAP.getProperty(0);
SoapObject s_deals = (SoapObject) root.getProperty("FOO_DEALS");

StringBuilder stringBuilder = new StringBuilder();

System.out.println("********Count : "+ s_deals.getPropertyCount());

for (int i = 0; i < s_deals.getPropertyCount(); i++) 
{
    Object property = s_deals.getProperty(i);
    if (property instanceof SoapObject)
    {
        SoapObject category_list = (SoapObject) property;
        String CATEGORY = category_list.getProperty("CATEGORY").toString();
        String CATEGORY_URL = category_list.getProperty("CATEGORY_URL").toString();
        String CATEGORY_ICON = category_list.getProperty("CATEGORY_ICON").toString();
        String CATEGORY_COUNT = category_list.getProperty("CATEGORY_COUNT").toString();
        String SUPERTAG = category_list.getProperty("SUPERTAG").toString();
        String TYPE = category_list.getProperty("TYPE").toString();
        stringBuilder.append
        (
             "Row value of: " +(i+1)+"\n"+
             "Category: "+CATEGORY+"\n"+
             "Category URL: "+CATEGORY_URL+"\n"+
             "Category_Icon: "+CATEGORY_ICON+"\n"+
             "Category_Count: "+CATEGORY_COUNT+"\n"+
             "SuperTag: "+SUPERTAG+"\n"+
             "Type: "+TYPE+"\n"+
             "******************************"
        );                   
        stringBuilder.append("\n");
    }
}
于 2013-04-26T04:56:41.613 に答える