/** * Parses the string value of an attribute value or text content. * * @param stringValue string value * @param field field to set or {@code null} if not applicable * @param valueType value type (class, parameterized type, or generic array type) or {@code null} * for none * @param context context list, going from least specific to most specific type context, for * example container class and its field * @param destination destination object or {@code null} for none * @param genericXml generic XML or {@code null} if not applicable * @param destinationMap destination map or {@code null} if not applicable * @param name key name */ private static void parseAttributeOrTextContent(String stringValue, Field field, Type valueType, List<Type> context, Object destination, GenericXml genericXml, Map<String, Object> destinationMap, String name) { if (field != null || genericXml != null || destinationMap != null) { valueType = field == null ? valueType : field.getGenericType(); Object value = parseValue(valueType, context, stringValue); setValue(value, field, destination, genericXml, destinationMap, name); } }
private static Object parseTextContentForElement( XmlPullParser parser, List<Type> context, boolean ignoreTextContent, Type textContentType) throws XmlPullParserException, IOException { Object result = null; int level = 1; while (level != 0) { switch (parser.next()) { case XmlPullParser.END_DOCUMENT: level = 0; break; case XmlPullParser.START_TAG: level++; break; case XmlPullParser.END_TAG: level--; break; case XmlPullParser.TEXT: if (!ignoreTextContent && level == 1) { result = parseValue(textContentType, context, parser.getText()); } break; default: break; } } return result; }