XmlUtilspublic class XmlUtils extends Object
Methods Summary |
---|
public static final void | beginDocument(org.xmlpull.v1.XmlPullParser parser, java.lang.String firstElementName)
int type;
while ((type=parser.next()) != parser.START_TAG
&& type != parser.END_DOCUMENT) {
;
}
if (type != parser.START_TAG) {
throw new XmlPullParserException("No start tag found");
}
if (!parser.getName().equals(firstElementName)) {
throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
", expected " + firstElementName);
}
| public static final boolean | convertValueToBoolean(java.lang.CharSequence value, boolean defaultValue)
boolean result = false;
if (null == value)
return defaultValue;
if (value.equals("1")
|| value.equals("true")
|| value.equals("TRUE"))
result = true;
return result;
| public static final int | convertValueToInt(java.lang.CharSequence charSeq, int defaultValue)
if (null == charSeq)
return defaultValue;
String nm = charSeq.toString();
// XXX This code is copied from Integer.decode() so we don't
// have to instantiate an Integer!
int value;
int sign = 1;
int index = 0;
int len = nm.length();
int base = 10;
if ('-" == nm.charAt(0)) {
sign = -1;
index++;
}
if ('0" == nm.charAt(index)) {
// Quick check for a zero by itself
if (index == (len - 1))
return 0;
char c = nm.charAt(index + 1);
if ('x" == c || 'X" == c) {
index += 2;
base = 16;
} else {
index++;
base = 8;
}
}
else if ('#" == nm.charAt(index))
{
index++;
base = 16;
}
return Integer.parseInt(nm.substring(index), base) * sign;
| public static final int | convertValueToList(java.lang.CharSequence value, java.lang.String[] options, int defaultValue)
if (null != value) {
for (int i = 0; i < options.length; i++) {
if (value.equals(options[i]))
return i;
}
}
return defaultValue;
| public static final int | convertValueToUnsignedInt(java.lang.String value, int defaultValue)
if (null == value)
return defaultValue;
return parseUnsignedIntAttribute(value);
| public static final void | nextElement(org.xmlpull.v1.XmlPullParser parser)
int type;
while ((type=parser.next()) != parser.START_TAG
&& type != parser.END_DOCUMENT) {
;
}
| public static final int | parseUnsignedIntAttribute(java.lang.CharSequence charSeq)
String value = charSeq.toString();
long bits;
int index = 0;
int len = value.length();
int base = 10;
if ('0" == value.charAt(index)) {
// Quick check for zero by itself
if (index == (len - 1))
return 0;
char c = value.charAt(index + 1);
if ('x" == c || 'X" == c) { // check for hex
index += 2;
base = 16;
} else { // check for octal
index++;
base = 8;
}
} else if ('#" == value.charAt(index)) {
index++;
base = 16;
}
return (int) Long.parseLong(value.substring(index), base);
| public static final java.util.ArrayList | readListXml(java.io.InputStream in)Read an ArrayList from an InputStream containing XML. The stream can
previously have been written by writeListXml().
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in, null);
return (ArrayList)readValueXml(parser, new String[1]);
| public static final java.util.HashMap | readMapXml(java.io.InputStream in)Read a HashMap from an InputStream containing XML. The stream can
previously have been written by writeMapXml().
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in, null);
return (HashMap)readValueXml(parser, new String[1]);
| public static final int[] | readThisIntArrayXml(org.xmlpull.v1.XmlPullParser parser, java.lang.String endTag, java.lang.String[] name)Read an int[] object from an XmlPullParser. The XML data could
previously have been generated by writeIntArrayXml(). The XmlPullParser
must be positioned after the tag that begins the list.
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 == parser.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 == parser.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 != parser.END_DOCUMENT);
throw new XmlPullParserException(
"Document ended before " + endTag + " end tag");
| public static final java.util.ArrayList | readThisListXml(org.xmlpull.v1.XmlPullParser parser, java.lang.String endTag, java.lang.String[] name)Read an ArrayList object from an XmlPullParser. The XML data could
previously have been generated by writeListXml(). The XmlPullParser
must be positioned after the tag that begins the list.
ArrayList list = new ArrayList();
int eventType = parser.getEventType();
do {
if (eventType == parser.START_TAG) {
Object val = readThisValueXml(parser, name);
list.add(val);
//System.out.println("Adding to list: " + val);
} else if (eventType == parser.END_TAG) {
if (parser.getName().equals(endTag)) {
return list;
}
throw new XmlPullParserException(
"Expected " + endTag + " end tag at: " + parser.getName());
}
eventType = parser.next();
} while (eventType != parser.END_DOCUMENT);
throw new XmlPullParserException(
"Document ended before " + endTag + " end tag");
| public static final java.util.HashMap | readThisMapXml(org.xmlpull.v1.XmlPullParser parser, java.lang.String endTag, java.lang.String[] name)Read a HashMap object from an XmlPullParser. The XML data could
previously have been generated by writeMapXml(). The XmlPullParser
must be positioned after the tag that begins the map.
HashMap map = new HashMap();
int eventType = parser.getEventType();
do {
if (eventType == parser.START_TAG) {
Object val = readThisValueXml(parser, name);
if (name[0] != null) {
//System.out.println("Adding to map: " + name + " -> " + val);
map.put(name[0], val);
} else {
throw new XmlPullParserException(
"Map value without name attribute: " + parser.getName());
}
} else if (eventType == parser.END_TAG) {
if (parser.getName().equals(endTag)) {
return map;
}
throw new XmlPullParserException(
"Expected " + endTag + " end tag at: " + parser.getName());
}
eventType = parser.next();
} while (eventType != parser.END_DOCUMENT);
throw new XmlPullParserException(
"Document ended before " + endTag + " end tag");
| private static final java.lang.Object | readThisValueXml(org.xmlpull.v1.XmlPullParser parser, java.lang.String[] name)
final String valueName = parser.getAttributeValue(null, "name");
final String tagName = parser.getName();
//System.out.println("Reading this value tag: " + tagName + ", name=" + valueName);
Object res;
if (tagName.equals("null")) {
res = null;
} else if (tagName.equals("string")) {
String value = "";
int eventType;
while ((eventType = parser.next()) != parser.END_DOCUMENT) {
if (eventType == parser.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 == parser.TEXT) {
value += parser.getText();
} else if (eventType == parser.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 = new Float(parser.getAttributeValue(null, "value"));
} else if (tagName.equals("double")) {
res = new Double(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;
//System.out.println("Returning value for " + valueName + ": " + res);
return res;
} else if (tagName.equals("map")) {
parser.next();
res = readThisMapXml(parser, "map", name);
name[0] = valueName;
//System.out.println("Returning value for " + valueName + ": " + res);
return res;
} else if (tagName.equals("list")) {
parser.next();
res = readThisListXml(parser, "list", name);
name[0] = valueName;
//System.out.println("Returning value for " + valueName + ": " + res);
return res;
} else {
throw new XmlPullParserException(
"Unknown tag: " + tagName);
}
// Skip through to end tag.
int eventType;
while ((eventType = parser.next()) != parser.END_DOCUMENT) {
if (eventType == parser.END_TAG) {
if (parser.getName().equals(tagName)) {
name[0] = valueName;
//System.out.println("Returning value for " + valueName + ": " + res);
return res;
}
throw new XmlPullParserException(
"Unexpected end tag in <" + tagName + ">: " + parser.getName());
} else if (eventType == parser.TEXT) {
throw new XmlPullParserException(
"Unexpected text in <" + tagName + ">: " + parser.getName());
} else if (eventType == parser.START_TAG) {
throw new XmlPullParserException(
"Unexpected start tag in <" + tagName + ">: " + parser.getName());
}
}
throw new XmlPullParserException(
"Unexpected end of document in <" + tagName + ">");
| public static final java.lang.Object | readValueXml(org.xmlpull.v1.XmlPullParser parser, java.lang.String[] name)Read a flattened object from an XmlPullParser. The XML data could
previously have been written with writeMapXml(), writeListXml(), or
writeValueXml(). The XmlPullParser must be positioned at the
tag that defines the value.
int eventType = parser.getEventType();
do {
if (eventType == parser.START_TAG) {
return readThisValueXml(parser, name);
} else if (eventType == parser.END_TAG) {
throw new XmlPullParserException(
"Unexpected end tag at: " + parser.getName());
} else if (eventType == parser.TEXT) {
throw new XmlPullParserException(
"Unexpected text: " + parser.getText());
}
eventType = parser.next();
} while (eventType != parser.END_DOCUMENT);
throw new XmlPullParserException(
"Unexpected end of document");
| public static void | skipCurrentTag(org.xmlpull.v1.XmlPullParser parser)
int outerDepth = parser.getDepth();
int type;
while ((type=parser.next()) != XmlPullParser.END_DOCUMENT
&& (type != XmlPullParser.END_TAG
|| parser.getDepth() > outerDepth)) {
}
| public static final void | writeByteArrayXml(byte[] val, java.lang.String name, org.xmlpull.v1.XmlSerializer out)Flatten a byte[] into an XmlSerializer. The list can later be read back
with readThisByteArrayXml().
if (val == null) {
out.startTag(null, "null");
out.endTag(null, "null");
return;
}
out.startTag(null, "byte-array");
if (name != null) {
out.attribute(null, "name", name);
}
final int N = val.length;
out.attribute(null, "num", Integer.toString(N));
StringBuilder sb = new StringBuilder(val.length*2);
for (int i=0; i<N; i++) {
int b = val[i];
int h = b>>4;
sb.append(h >= 10 ? ('a"+h-10) : ('0"+h));
h = b&0xff;
sb.append(h >= 10 ? ('a"+h-10) : ('0"+h));
}
out.text(sb.toString());
out.endTag(null, "byte-array");
| public static final void | writeIntArrayXml(int[] val, java.lang.String name, org.xmlpull.v1.XmlSerializer out)Flatten an int[] into an XmlSerializer. The list can later be read back
with readThisIntArrayXml().
if (val == null) {
out.startTag(null, "null");
out.endTag(null, "null");
return;
}
out.startTag(null, "int-array");
if (name != null) {
out.attribute(null, "name", name);
}
final int N = val.length;
out.attribute(null, "num", Integer.toString(N));
for (int i=0; i<N; i++) {
out.startTag(null, "item");
out.attribute(null, "value", Integer.toString(val[i]));
out.endTag(null, "item");
}
out.endTag(null, "int-array");
| public static final void | writeListXml(java.util.List val, java.lang.String name, org.xmlpull.v1.XmlSerializer out)Flatten a List into an XmlSerializer. The list can later be read back
with readThisListXml().
if (val == null) {
out.startTag(null, "null");
out.endTag(null, "null");
return;
}
out.startTag(null, "list");
if (name != null) {
out.attribute(null, "name", name);
}
int N = val.size();
int i=0;
while (i < N) {
writeValueXml(val.get(i), null, out);
i++;
}
out.endTag(null, "list");
| public static final void | writeListXml(java.util.List val, java.io.OutputStream out)Flatten a List into an output stream as XML. The list can later be
read back with readListXml().
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out, "utf-8");
serializer.startDocument(null, true);
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
writeListXml(val, null, serializer);
serializer.endDocument();
| public static final void | writeMapXml(java.util.Map val, java.io.OutputStream out)Flatten a Map into an output stream as XML. The map can later be
read back with readMapXml().
XmlSerializer serializer = new FastXmlSerializer();
serializer.setOutput(out, "utf-8");
serializer.startDocument(null, true);
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
writeMapXml(val, null, serializer);
serializer.endDocument();
| public static final void | writeMapXml(java.util.Map val, java.lang.String name, org.xmlpull.v1.XmlSerializer out)Flatten a Map into an XmlSerializer. The map can later be read back
with readThisMapXml().
if (val == null) {
out.startTag(null, "null");
out.endTag(null, "null");
return;
}
Set s = val.entrySet();
Iterator i = s.iterator();
out.startTag(null, "map");
if (name != null) {
out.attribute(null, "name", name);
}
while (i.hasNext()) {
Map.Entry e = (Map.Entry)i.next();
writeValueXml(e.getValue(), (String)e.getKey(), out);
}
out.endTag(null, "map");
| public static final void | writeValueXml(java.lang.Object v, java.lang.String name, org.xmlpull.v1.XmlSerializer out)Flatten an object's value into an XmlSerializer. The value can later
be read back with readThisValueXml().
Currently supported value types are: null, String, Integer, Long,
Float, Double Boolean, Map, List.
String typeStr;
if (v == null) {
out.startTag(null, "null");
if (name != null) {
out.attribute(null, "name", name);
}
out.endTag(null, "null");
return;
} else if (v instanceof String) {
out.startTag(null, "string");
if (name != null) {
out.attribute(null, "name", name);
}
out.text(v.toString());
out.endTag(null, "string");
return;
} else if (v instanceof Integer) {
typeStr = "int";
} else if (v instanceof Long) {
typeStr = "long";
} else if (v instanceof Float) {
typeStr = "float";
} else if (v instanceof Double) {
typeStr = "double";
} else if (v instanceof Boolean) {
typeStr = "boolean";
} else if (v instanceof byte[]) {
writeByteArrayXml((byte[])v, name, out);
return;
} else if (v instanceof int[]) {
writeIntArrayXml((int[])v, name, out);
return;
} else if (v instanceof Map) {
writeMapXml((Map)v, name, out);
return;
} else if (v instanceof List) {
writeListXml((List)v, name, out);
return;
} else if (v instanceof CharSequence) {
// XXX This is to allow us to at least write something if
// we encounter styled text... but it means we will drop all
// of the styling information. :(
out.startTag(null, "string");
if (name != null) {
out.attribute(null, "name", name);
}
out.text(v.toString());
out.endTag(null, "string");
return;
} else {
throw new RuntimeException("writeValueXml: unable to write value " + v);
}
out.startTag(null, typeStr);
if (name != null) {
out.attribute(null, "name", name);
}
out.attribute(null, "value", v.toString());
out.endTag(null, typeStr);
|
|