2013-04-26 3 views
-1

배열 집합을 던지는 웹 서비스가 있습니다. 나는 webservice ie로부터 응답을 얻기 위해 Ksoap를 사용하고있다.ksoap 배열 응답을 구문 분석하는 방법

anyType {NewDataSet = anyType {Table = anyType {couponname = coupon name; couponimage = 이미지; 쿠폰 코드 = 코드; coupondescription = 설명; couponstartdate = 시작 날짜; couponenddate = 종료 날짜; id = 1; }; 표 = anyType {쿠폰 이름 = 쿠폰 이름 1; 쿠폰 이미지 = 이미지; couponcode = code1; coupondescription = description1; couponstartdate = 시작 날짜 1; 쿠폰 날짜 = 종료 날짜 1; id = 2; }; 표 = anyType {쿠폰 이름 = 쿠폰 이름 2; 쿠폰 이미지 = 이미지; couponcode = code2; coupondescription = description2; couponstartdate = 시작 날짜 2; couponenddate = 끝 날짜 2; id = 3; }; }; }

누구든지이 응답을 구문 분석하는 방법에 대한 자습서 나 제안을 줄 수 있습니까? 모든 의견을 높이 평가할 것입니다.

답변

2

네, 당신은 그것을 할 수 있습니다와 같은 :이가 이해할 수 있다면

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); 
    } 
} 

:

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; }; 
    ... 
} 

그런 다음 당신이 좋아해야 할 : 당신의 응답이만큼 유사하다

경우 예를 들어 알려주세요. 그렇지 않으면 응답 데이터의 파싱 코드를 보내 드리겠습니다.

또는 다른 같은 :

androidHttpTransport.call(SOAP_ACTION, envelope); 

을 추가 :로 호출하기 전에

androidHttpTransport.debug = true; 

: 당신은 단지를 추가하여 비누 개체에서 XML 응답을 얻을 수

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"); 
    } 
} 
+0

w0w 감사 :

당신은 작업을 달성하기 위해 다음 코드를 따를 수 있습니다. 내 응답을 구문 분석하는 코드를 실제로 보낼 수 있습니까? –

+0

예. 하지만 더 좋은 방법은 xml을 꺼내서 색소폰 파싱을 사용하는 것입니다. 하지만 필요한 경우 코드를 제공 할 것입니다. 네가 도움을 받으면 내 대답에 투표 해. –

+0

알았어. 내가 너에게 답해 줄 것이고, 너도 그걸 내 이메일로 보내 줄 수있어? –

관련 문제