您的位置:首页 > 移动开发 > Android开发

Android XmlResourceParser解析Xm文件实例

2013-07-29 17:51 531 查看
本篇将通过一个实例介绍一下下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

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: