Android XmlResourceParser解析Xm文件实例
本篇将通过一个实例介绍一下下XmlResourceParser解析xml文件的具体方法,首先给出xml文件结构:
1.timezones.xml:
<timezones>
<timezone id="GMT+01:00" weatherID="1478198">Douala</timezone>
<timezone id="GMT+03:00" weatherID="20070421">Kampala</timezone>
<timezone id="GMT+01:00" weatherID="1396803">Kano</timezone>
<timezone id="GMT+03:00" weatherID="1433559">Khartoum</timezone>
<timezone id="GMT+01:00" weatherID="1290062">Kinshasa</timezone>
<timezone id="GMT+01:00" weatherID="2346342">Lagos</timezone>
<timezone id="GMT+01:00" weatherID="1261906">Luanda</timezone>
<timezone id="GMT+02:00" weatherID="1569006">Lusaka</timezone>
<timezone id="GMT+02:00" weatherID="1550363">Maputo</timezone>
<timezone id="GMT+00:00" weatherID="2453077">Monrovia</timezone>
</timezones>
2.解析xml文件关键代码:
/**
* get info from a xml file.
*/
public void getXMLContent() {
XmlResourceParser xrp = null;
try {
xrp = getResources().getXml(R.xml.timezones);
while (xrp.next() != XmlResourceParser.START_TAG) {
continue;
}
xrp.next();
int readCount = 0;
while (xrp.getEventType() != XmlResourceParser.END_TAG) {
while (xrp.getEventType() != XmlResourceParser.START_TAG) {
if (xrp.getEventType() == XmlResourceParser.END_DOCUMENT) {
return;
}
xrp.next();
}
if (xrp.getName().equals("timezone")) {
String id = xrp.getAttributeValue(TIMEZONE_ID);
String weatherID = xrp.getAttributeValue(WEATHER_ID);
String displayName = xrp.nextText();
mCalendar.setTimeZone(TimeZone.getTimeZone(id));
if (readCount < 50) {
android.util.Log.e(TAG,"id:"+id+"--DigitTimeZone:"+getDigitTimeZone(id));
android.util.Log.e(TAG,"weatherID:"+weatherID);
android.util.Log.e(TAG,"displayName:"+displayName+"--time:"+DateFormat.format(mIs24HoursMode ? "k:mm" : "h:mmaa", mCalendar));
readCount++;
}
}
while (xrp.getEventType() != XmlResourceParser.END_TAG) {
xrp.next();
}
xrp.next();
}
mNumberInXml = readCount;
android.util.Log.v(TAG,"id:"+mNumberInXml);
xrp.close();
} catch (XmlPullParserException xppe) {
Log.e(TAG, "Ill-formatted timezones.xml file");
} catch (java.io.IOException ioe) {
Log.w(TAG, "Unable to read timezones.xml file");
} finally {
if (null != xrp) {
xrp.close();
}
}
}
PS:
(1).根据解析出来的时区ID,可以得到对应的数字时区:
public int getDigitTimeZone(String id) {
TimeZone mTimeZone = TimeZone.getTimeZone(id);
int digitTimeZone = mTimeZone.getRawOffset() / 60 / 60 / 1000;
return digitTimeZone;
}
(2).同时你也可以设置24小时制啥的,代码:
//24小时制
public void set24HoursMode(Context c) {
mIs24HoursMode = android.text.format.DateFormat.is24HourFormat(c);;
}
运行程序,log日志:
完整代码下载地址:http://download.csdn.net/detail/dadaxiaoxiaode/5834609