2013-03-27 4 views
-1

Je dois obtenir la valeur de mangue et d'orange du xml ci-dessous en utilisant le service d'arrière-plan android.Tâche asynchrone et savon Android

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 

<soap:Body><wsFruitResponse xmlns="http://www.orange.ws/fruitspec/ws"> 

<mango>wow</mango> 

<orange>boom</orange> 

</wsFruitResponse> 

</soap:Body> 

</soap:Envelope> 

Ensuite, il doit être stocké dans une liste de matrices. Comment puis-je atteindre cet objectif. Je suis habitué à l'analyseur de saxophone habituel mais cette chose de savon a l'air bizarre. S'il vous plaît aider

classe loadingTask étend AsyncTask {

protected String doInBackground(String... urls) { 

     ... 
     sh.parseContent(""); 
     return ""; 

    } 

    protected void onPostExecute(String s) { 

     ShowProgress.dismiss(); 

    } 
} 

class SAXHelper { 
    public HashMap<String, String> userList = new HashMap<String, String>(); 
    private URL url2; 

    public SAXHelper(String url1) throws MalformedURLException { 
     this.url2 = new URL(url1); 
    } 

    public RSSHandler parseContent(String parseContent) { 
     RSSHandler df = new RSSHandler(); 
     try { 

      .... 
      xr.setContentHandler(df); 
      xr.parse(new InputSource(url2.openStream())); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return df; 
    } 
} 

class RSSHandler extends DefaultHandler { 

    private Post currentPost = new Post(); 

    StringBuffer chars = new StringBuffer(); 

    @Override 
    public void startElement(String uri, String localName, String qName, 
      Attributes atts) { 

     chars = new StringBuffer(); 
     if (localName.equalsIgnoreCase("item")) { 

     } 
    } 

    @Override 
    public void endElement(String uri, String localName, String qName) 
      throws SAXException { 

     if (localName.equalsIgnoreCase("orange") 
       && currentPost.getOrange() == null) { 
      currentPost.setOrange(chars.toString()); 

     } 
     if (localName.equalsIgnoreCase("mango") 
       && currentPost.getMango() == null) { 
      currentPost.setMango(chars.toString()); 

     } 

     if (localName.equalsIgnoreCase("item")) { 
      PostList.add(currentPost); 
      currentPost = new Post(); 
     } 

    } 

    @Override 
    public void characters(char ch[], int start, int length) { 
     chars.append(new String(ch, start, length)); 
    } 

} 
+0

xml: wow flèche yakusha

+0

S'il vous plaît cadrer votre question de manière plus professionnelle et vous pouvez obtenir une réponse. – AbdulHannan

+0

Qu'avez-vous essayé? http://mattgemmell.com/2008/12/08/what-have-you-tried/ – Deestan

Répondre

0

N.B.: utilise ce Jsoup. Download Jsoup, collez-le dans le dossier libs de votre projet.

vous pouvez essayer quelque chose comme ceci:

URL form = new URL(Your_url_String); 
HttpURLConnection connection1 = (HttpURLConnection)form.openConnection(); 
connection1.setRequestProperty("Cookie", your_cookie);//if you have no cookie, you can skip this line 

connection1.setReadTimeout(10000); 
StringBuilder whole = new StringBuilder(); 

BufferedReader in = new BufferedReader(
     new InputStreamReader(new BufferedInputStream(connection1.getInputStream()))); 
String inputLine; 
while ((inputLine = in.readLine()) != null) 
    whole.append(inputLine); 
    in.close(); 
Document doc = Jsoup.parse(whole.toString()); 
Element element1 = doc.select("mango"); 
Element element2 = doc.select("orange"); 

String value_of_mango = element1.text(); 
String value_of_orange = element2.text(); 

Mise à jour:

u peut faire pour votre savon comme: Rappelez-vous, u ont à l'entrée soap sous forme de chaîne.

String html = "<html><head><title>First parse</title></head>" 
    + "<body><p>Parsed HTML into a doc.</p></body></html>"; 

Document doc = Jsoup.parse(html); 

Element element1 = doc.select("mango"); 
Element element2 = doc.select("orange"); 

String value_of_mango = element1.text(); 
String value_of_orange = element2.text(); 
+0

Forme d'URL = nouvelle URL (Your_url_String); ? Puis-je mettre le contenu du savon dans votre_string_string s'il vous plait? – yakusha

+0

@yakusha: j'ai mis à jour ma réponse – Shoshi

+0

okie merci mec – yakusha

Questions connexes