Here you can find the source of readValueXml(XmlPullParser parser, String[] name)
public static final Object readValueXml(XmlPullParser parser, String[] name) throws XmlPullParserException, java.io.IOException
//package com.java2s; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; public class Main { public static final Object readValueXml(XmlPullParser parser, String[] name) throws XmlPullParserException, java.io.IOException { int eventType = parser.getEventType(); do {// w ww . java 2 s .co m if (eventType == XmlPullParser.START_TAG) { return readThisValueXml(parser, name); } else if (eventType == XmlPullParser.END_TAG) { throw new XmlPullParserException("Unexpected end tag at: " + parser.getName()); } else if (eventType == XmlPullParser.TEXT) { throw new XmlPullParserException("Unexpected text: " + parser.getText()); } eventType = parser.next(); } while (eventType != XmlPullParser.END_DOCUMENT); throw new XmlPullParserException("Unexpected end of document"); } private static final Object readThisValueXml(XmlPullParser parser, String[] name) throws XmlPullParserException, java.io.IOException { final String valueName = parser.getAttributeValue(null, "name"); final String tagName = parser.getName(); Object res; if (tagName.equals("null")) { res = null; } else if (tagName.equals("string")) { String value = ""; int eventType; while ((eventType = parser.next()) != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals("string")) { name[0] = valueName; // System.out.println("Returning value for " + valueName // + ": " + value); return value; } throw new XmlPullParserException( "Unexpected end tag in <string>: " + parser.getName()); } else if (eventType == XmlPullParser.TEXT) { value += parser.getText(); } else if (eventType == XmlPullParser.START_TAG) { throw new XmlPullParserException( "Unexpected start tag in <string>: " + parser.getName()); } } throw new XmlPullParserException( "Unexpected end of document in <string>"); } else if (tagName.equals("int")) { res = Integer.parseInt(parser.getAttributeValue(null, "value")); } else if (tagName.equals("long")) { res = Long.valueOf(parser.getAttributeValue(null, "value")); } else if (tagName.equals("float")) { res = Float.valueOf(parser.getAttributeValue(null, "value")); } else if (tagName.equals("double")) { res = Double.valueOf(parser.getAttributeValue(null, "value")); } else if (tagName.equals("boolean")) { res = Boolean.valueOf(parser.getAttributeValue(null, "value")); } else if (tagName.equals("int-array")) { parser.next(); res = readThisIntArrayXml(parser, "int-array", name); name[0] = valueName; return res; } else if (tagName.equals("map")) { parser.next(); res = readThisMapXml(parser, "map", name); name[0] = valueName; return res; } else if (tagName.equals("list")) { parser.next(); res = readThisListXml(parser, "list", name); name[0] = valueName; return res; } else if (tagName.equals("set")) { parser.next(); res = readThisSetXml(parser, "set", name); name[0] = valueName; return res; } else { throw new XmlPullParserException("Unknown tag: " + tagName); } int eventType; while ((eventType = parser.next()) != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals(tagName)) { name[0] = valueName; return res; } throw new XmlPullParserException("Unexpected end tag in <" + tagName + ">: " + parser.getName()); } else if (eventType == XmlPullParser.TEXT) { throw new XmlPullParserException("Unexpected text in <" + tagName + ">: " + parser.getName()); } else if (eventType == XmlPullParser.START_TAG) { throw new XmlPullParserException( "Unexpected start tag in <" + tagName + ">: " + parser.getName()); } } throw new XmlPullParserException("Unexpected end of document in <" + tagName + ">"); } public static final int[] readThisIntArrayXml(XmlPullParser parser, String endTag, String[] name) throws XmlPullParserException, java.io.IOException { int num; try { num = Integer.parseInt(parser.getAttributeValue(null, "num")); } catch (NullPointerException e) { throw new XmlPullParserException( "Need num attribute in byte-array"); } catch (NumberFormatException e) { throw new XmlPullParserException( "Not a number in num attribute in byte-array"); } int[] array = new int[num]; int i = 0; int eventType = parser.getEventType(); do { if (eventType == XmlPullParser.START_TAG) { if (parser.getName().equals("item")) { try { array[i] = Integer.parseInt(parser .getAttributeValue(null, "value")); } catch (NullPointerException e) { throw new XmlPullParserException( "Need value attribute in item"); } catch (NumberFormatException e) { throw new XmlPullParserException( "Not a number in value attribute in item"); } } else { throw new XmlPullParserException( "Expected item tag at: " + parser.getName()); } } else if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals(endTag)) { return array; } else if (parser.getName().equals("item")) { i++; } else { throw new XmlPullParserException("Expected " + endTag + " end tag at: " + parser.getName()); } } eventType = parser.next(); } while (eventType != XmlPullParser.END_DOCUMENT); throw new XmlPullParserException("Document ended before " + endTag + " end tag"); } public static final HashMap readThisMapXml(XmlPullParser parser, String endTag, String[] name) throws XmlPullParserException, java.io.IOException { HashMap map = new HashMap(); int eventType = parser.getEventType(); do { if (eventType == XmlPullParser.START_TAG) { Object val = readThisValueXml(parser, name); if (name[0] != null) { map.put(name[0], val); } else { throw new XmlPullParserException( "Map value without name attribute: " + parser.getName()); } } else if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals(endTag)) { return map; } throw new XmlPullParserException("Expected " + endTag + " end tag at: " + parser.getName()); } eventType = parser.next(); } while (eventType != XmlPullParser.END_DOCUMENT); throw new XmlPullParserException("Document ended before " + endTag + " end tag"); } public static final ArrayList readThisListXml(XmlPullParser parser, String endTag, String[] name) throws XmlPullParserException, java.io.IOException { ArrayList list = new ArrayList(); int eventType = parser.getEventType(); do { if (eventType == XmlPullParser.START_TAG) { Object val = readThisValueXml(parser, name); list.add(val); // System.out.println("Adding to list: " + val); } else if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals(endTag)) { return list; } throw new XmlPullParserException("Expected " + endTag + " end tag at: " + parser.getName()); } eventType = parser.next(); } while (eventType != XmlPullParser.END_DOCUMENT); throw new XmlPullParserException("Document ended before " + endTag + " end tag"); } public static final HashSet readThisSetXml(XmlPullParser parser, String endTag, String[] name) throws XmlPullParserException, java.io.IOException { HashSet set = new HashSet(); int eventType = parser.getEventType(); do { if (eventType == XmlPullParser.START_TAG) { Object val = readThisValueXml(parser, name); set.add(val); // System.out.println("Adding to set: " + val); } else if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals(endTag)) { return set; } throw new XmlPullParserException("Expected " + endTag + " end tag at: " + parser.getName()); } eventType = parser.next(); } while (eventType != XmlPullParser.END_DOCUMENT); throw new XmlPullParserException("Document ended before " + endTag + " end tag"); } }