-1

androidバックグラウンドサービスを使用して、以下のxmlからマンゴーとオレンジの値を取得する必要があります。

<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>

次に、配列リストに格納する必要があります。どうすればこれを達成できますか。私は通常のサックスパーサーに慣れていますが、この石鹸は奇妙に見えます。助けてください

クラス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));
    }

}
4

1 に答える 1

0

注意:これはJsoupを使用しています。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();

アップデート:

あなたはあなたの石鹸のために次のようにすることができます:覚えておいてください、あなたは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();
于 2013-03-27T11:47:03.217 に答える