2013-03-27 3 views
-1

Мне нужно получить значение манго и апельсина из xml ниже, используя службу поддержки Android.Задача и мыло Async 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> 

Затем он должен храниться в списке массивов. Как я могу это достичь. Я привык к регулярному парсеру sax, но это мыло выглядит странно. Пожалуйста, помогите

класса loadingTask расширяет 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-: <мыло: Конверт XMLNS: мыло = "http://schemas.xmlsoap.org/soap/envelope/"> вау бум yakusha

+0

Пожалуйста, кадрирования вопрос более профессионально, и вы можете получить какой-то ответ. – AbdulHannan

+0

Что вы пробовали? http://mattgemmell.com/2008/12/08/what-have-you-tried/ – Deestan

ответ

0

N.B: это с помощью Jsoup. Download Jsoup, вставьте его в папку проекта libs.

вы можете попробовать что-то вроде этого:

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

Update:

и может сделать для вашего мыла, как: Помните, что у вас на входе soap в виде строки.

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

URL-адрес = новый URL (Your_url_String); ? Могу ли я поместить содержимое мыла в your_url_string, пожалуйста? – yakusha

+0

@yakusha: У меня есть обновленный ответ – Shoshi

+0

okie thanks dude – yakusha

Смежные вопросы