Android XmlResourceParser解析Xm文件实例

来源:互联网 发布:it行业发展前景论文 编辑:程序博客网 时间:2024/04/29 14:36

本篇将通过一个实例介绍一下下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

 

 

原创粉丝点击