Это действительно зависит от того, для чего вам нужны данные.Но если вам нужно извлечь данные из xml и у вас есть подготовленные к ним классы (например, ученик, степень и т. Д.), Вы реализуете нечто похожее на следующий фрагмент кода.
Предполагая, что у вас есть данные xmlв переменной dataReader в качестве Reader, для тестирования вы можете использовать:
String stringData = "...the data goes here...";
StringReader dataReader = new StringReader (stringData);
Код выглядит следующим образом (с подготовкой классов для студентов и дипломов):
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(dataReader);
int eventType = xpp.getEventType();
List<Student> students = new ArrayList<Student>();
Student lastStudent = null;
Degree lastDegree = null;
String lastStartTag = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
final String startTag = xpp.getName();
if ("student".equalsIgnoreCase(startTag)) {
lastStudent = new Student();
} else if ("degree".equalsIgnoreCase(startTag)) {
lastDegree = new Degree();
// TODO: Implement rest of start tags here...
}
lastStartTag = startTag;
} else if (eventType == XmlPullParser.END_TAG) {
final String endTag = xpp.getName();
if ("student".equalsIgnoreCase(endTag)) {
students.add(lastStudent);
lastStudent = null;
} else if ("degree".equalsIgnoreCase(endTag)) {
student.addDegree(lastDegree);
lastDegree = null;
}
// TODO: Implement rest of end tags here...
} else if (eventType == XmlPullParser.TEXT) {
final String text = xpp.getText();
if ("name".equalsIgnoreCase(lastStartTag)) {
if (lastStudent != null) {
lastStudent.setName(text);
} else if (lastDegree != null) {
lastDegree.setName(text);
}
} else if ("id".equalsIgnoreCase(lastStartTag)) {
if (lastStudent != null) {
lastStudent.setId(Integer.parseInt(text));
} else if (lastDegree != null) {
lastDegree.setId(Integer.parseInt(text));
}
}
// TODO: Implement rest of start tags here
}
eventType = xpp.next();
}
ПРИМЕЧАНИЕ: этот код НЕ обрабатывает какие-либо исключения.Вам придется разобраться с этим самостоятельно.