Создать базовый класс для утилиты xmlpullparser в Android
У меня есть некоторые проблемы с анализом XML с помощью API xmlpullparser для Android.
Проблема: у меня много дубликатов в классах Android, таких как Activity, или в некоторых бизнес-классах для парсера xml, но это то же самое!
Требуется: некоторый базовый класс или утилита для xmlpullparser, чтобы все разборы выполнялись в одном классе; Мне просто нужно отправить ему URL для XML или для WebService, и я получу значения и некоторые утилиты, если таковые имеются.
Вот что я имею на занятиях:
int count = 0;
try {
srv = new URL(
"URL Web Service");
factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
xpp = factory.newPullParser();
xpp.setInput(XMLUtility.getInputStream(srv), "UTF_8");
insideItem = false;
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if (xpp.getName().equalsIgnoreCase(tag)) {
insideItem = true;
} else if (xpp.getName().equalsIgnoreCase(SId)) {
if (insideItem)
id.add(xpp.nextText()); // extract the headline
} else if (xpp.getName().equalsIgnoreCase(SEn)) {
if (insideItem)
enable.add(xpp.nextText());
}
} else if (eventType == XmlPullParser.END_TAG
&& xpp.getName().equalsIgnoreCase(tag)) {
insideItem = false;
checkEnable.add(id.get(count) + "," + enable.get(count));
count++;
}
eventType = xpp.next();
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
Этот код дублируется; просто измените тег. Есть идеи?
1 ответ
Использовать xstream
http://x-stream.github.io/download.html
Вы можете определить класс ответа для xml и просто класс объекта или класс pojo.