如何在spinnerandroidstudio中解析url中的xml数据列表



我想在spinner中解析xml数据,我已经为数据制作了getter和setter,这是我从URL、中获得的xml数据

<response>
<result>
<foods>
<food>
<id>01</id>
<name>Pizza</name>
<price>20</price>
</food>
</foods>
</result>
</response>

如何在spinner中解析XML数据列表?

首先,为食物创建一个POJO类:

public class Food {
public String id, name, price;
}

private void parseXML(String urlResponse) {
XmlPullParserFactory parserFactory;
try {
parserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = parserFactory.newPullParser();
InputStream is = new ByteArrayInputStream(urlResponse.getBytes());
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(is, null);
processParsing(parser);
} catch (XmlPullParserException e) {
} catch (IOException e) {
}
}

private void processParsing(XmlPullParser parser) throws IOException, XmlPullParserException{
ArrayList<Food> foods = new ArrayList<>();
int eventType = parser.getEventType();
Food currentFood = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
String eltName = null;
switch (eventType) {
case XmlPullParser.START_TAG:
eltName = parser.getName();
if ("food".equals(eltName)) {
currentFood = new Food();
foods.add(currentFood);
} else if (currentFood != null) {
if ("name".equals(eltName)) {
currentFood.name = parser.nextText();
} else if ("id".equals(eltName)) {
currentFood.id = parser.nextText();
} else if ("price".equals(eltName)) {
currentFood.price = parser.nextText();
}
}
break;
}
eventType = parser.next();
}
printFoods(foods);
}

最新更新