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