use of org.xmlpull.v1.XmlPullParser.START_TAG in project android-maps-utils by googlemaps.
the class KmlFeatureParser method createTrack.
/**
* Creates a new KmlTrack object
*
* @return KmlTrack object
*/
private static KmlTrack createTrack(XmlPullParser parser) throws XmlPullParserException, IOException {
DateFormat iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.getDefault());
iso8601.setTimeZone(TimeZone.getTimeZone("UTC"));
ArrayList<LatLng> latLngs = new ArrayList<LatLng>();
ArrayList<Double> altitudes = new ArrayList<Double>();
ArrayList<Long> timestamps = new ArrayList<Long>();
HashMap<String, String> properties = new HashMap<>();
int eventType = parser.getEventType();
while (!(eventType == END_TAG && parser.getName().equals("Track"))) {
if (eventType == START_TAG) {
if (parser.getName().equals("coord")) {
String coordinateString = parser.nextText();
// fields are separated by spaces instead of commas
LatLngAlt latLngAlt = convertToLatLngAlt(coordinateString, " ");
latLngs.add(latLngAlt.latLng);
if (latLngAlt.altitude != null) {
altitudes.add(latLngAlt.altitude);
}
} else if (parser.getName().equals("when")) {
try {
String dateString = parser.nextText();
Date date = iso8601.parse(dateString);
long millis = date.getTime();
timestamps.add(millis);
} catch (ParseException e) {
throw new XmlPullParserException("Invalid date", parser, e);
}
} else if (parser.getName().equals(EXTENDED_DATA)) {
properties.putAll(setExtendedDataProperties(parser));
}
}
eventType = parser.next();
}
return new KmlTrack(latLngs, altitudes, timestamps, properties);
}
use of org.xmlpull.v1.XmlPullParser.START_TAG in project AndroidSDK-RecipeBook by gabu.
the class Recipe016 method onCreate.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// テストデータ
String xml = "<user id=\"1\" name=\"gabu\"><age>25</age></user>";
// パーサのインスタンスを取得
XmlPullParser parser = Xml.newPullParser();
try {
// パーサにXMLをセット
parser.setInput(new StringReader(xml));
// イベントタイプを初期化
int eventType = parser.getEventType();
// イベントタイプがEND_DOCUMENTになるまでループ
while (eventType != XmlPullParser.END_DOCUMENT) {
switch(eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG:
// アトリビュートの数を取得
int count = parser.getAttributeCount();
// アトリビュートの数だけループ
for (int i = 0; i < count; i++) {
// アトリビュートの名前を取得
String name = parser.getAttributeName(i);
Log.d(TAG, "name=" + name);
// アトリビュートの値を取得
String value = parser.getAttributeValue(i);
Log.d(TAG, "value=" + value);
}
break;
case XmlPullParser.END_TAG:
break;
case XmlPullParser.TEXT:
// START_TAG -> TEXT とイベントが発生する
// 今回の例だと<age>25</age>の25の部分が現在の位置
// この状態でgetTextメソッドでテキストを取得する
Log.d(TAG, "text=" + parser.getText());
break;
default:
break;
}
// パーサを次のイベントまで進める
eventType = parser.next();
}
} catch (XmlPullParserException e) {
// when setInput()
e.printStackTrace();
} catch (IOException e) {
// when next()
e.printStackTrace();
}
}
Aggregations