2013-08-06 3 views
0

Я использовал Ksoap2 для подключения к этой веб-службе .NET, и я получаю ответ xml, когда я ввожу идентификатор пользователя. Я хочу видеть только два тега callTitle и callDescription. Мне не нужны остальные, и я хочу, чтобы текст в тексте не был окружен кодом xml. может ли кто-нибудь помочь? Я не могу найти учебник онлайн.Ksoap2 parser xml data

public class AndroidWebService extends Activity { 

    /** Called when the activity is first created. */ 
    private static String SOAP_ACTION = "http://tempuri.org/GetHelpDeskCalls"; 
    private static String NAMESPACE = "http://tempuri.org/"; 
    private static String METHOD_NAME = "GetHelpDeskCalls"; 
    static final String URL = "https:/192.2344.123:8080/Service1.asmx"; 

    Button getData; 
    EditText userID; 
    TextView data; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.helpdesk); 

     getData = (Button) findViewById(R.id.button1); 
     userID = (EditText) findViewById(R.id.txtFar); 
     data = (TextView) findViewById(R.id.textView1); 

     Thread nT = new Thread() { 
      @Override 
      public void run() { 

       getData.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         SoapObject request = new SoapObject(NAMESPACE, 
           METHOD_NAME); 

         request.addProperty("userID", userID.getText() 
           .toString()); 




         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
           SoapEnvelope.VER11); 

         envelope.setOutputSoapObject(request); 
         envelope.dotNet = true; 
         HttpTransportSE androidHttpTransport = new HttpTransportSE(
           URL); 

         try { 

          androidHttpTransport.debug = true; 
          androidHttpTransport.call(SOAP_ACTION, envelope); 

          final String results = androidHttpTransport.responseDump 
            .toString(); 

          runOnUiThread(new Runnable() { 
           public void run() { 

            data.setText(results.toString()); 
           } 

          }); 

         } catch (Exception e) { 

          data.setText("Error" + e); 

         } 

        } 

       }); 

      } 

     }; 
     nT.start(); 
    } 



} 

ответ

0

вы должны разобрать ваш XML с помощью XML-парсера

Следующего кода поможет вам для этого

MyXmlPullParser objMyXmlPullParser = new MyXmlPullParser(context); 
         List<Map<String , String>> list = objMyXmlPullParser.readXml("Xml respose put here", "Table"); 



public class MyXmlPullParser 
{ 
    Context _context ; 

    public MyXmlPullParser(Context _context) 
    { 
     this._context = _context ; 
    } 

    public List<Map<String , String>> readXml(String XmlString , String ParentTag) 
    { 
     Map<String , String > map = new HashMap<String, String>(); 
     List<Map<String , String >> list = new ArrayList<Map<String , String >>(); 

     try 
     { 
      String Tag = "" ; 
      XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser xpp = factory.newPullParser(); 

      xpp.setInput(new StringReader (XmlString)); 
      int eventType = xpp.getEventType(); 

      while (true) 
      { 
       if(eventType == XmlPullParser.START_TAG) 
       { 
        Tag = xpp.getName(); 
       } 
       else if(eventType == XmlPullParser.END_TAG) 
       { 
        Tag = "" ; 
        if(xpp.getName().equals(ParentTag)) 
        { 
         list.add(map); 
         map = new HashMap<String, String>(); 
        } 
       } 
       else if(eventType == XmlPullParser.TEXT) 
       { 
        String text = xpp.getText(); 
        if(!Tag.equals("") && !Tag.equals(ParentTag)) 
        { 
         map.put(Tag, text); 
        } 
       } 
       else if(eventType == XmlPullParser.END_DOCUMENT) 
       { 
        System.out.println("End document"); 
        break ; 
       } 
       eventType = xpp.next(); 
      } 
     } 

     catch (XmlPullParserException e) 
     { 
      Log.e("xml reader" , "error in parsing xml"); 
      return null ; 
     } 
     catch (IOException e) 
     { 
      Log.e("xml reader" , "error in IO in xml"); 
      return null ; 
     } 
     return list ; 
    } 

Надеется, что это может поможет вам

+0

сделать я сделать новый класс для синтаксического анализа xml затем вызывает его в Activity? – user2500733

+0

Да, вы можете создать новый класс для анализа данных с передачей своих аргументов в его конструкторе. – Andrain

+0

жаль беспокоить вас, я просто смотрел развитие Android, поэтому я не очень хорошо это мог бы показать мне, как использовать XML-парсер кода на мой код – user2500733