Android解析自定义xml文件(方案一)

转载请注明出处:http://blog.csdn.net/droyon/article/details/9336493

xml文件:test_config.xml

<?xml version="1.0" encoding="utf-8"?>

<test_config version="1">
    <test_item item_name="item1">我们</test_item>
    <test_item item_name="item2">都是</test_item>
    <test_folder folder_name="folder1">好</test_folder>
    <test_folder folder_name="folder2">孩子</test_folder>
</test_config>

解析类:

package hlwang.test.resource;

import java.io.IOException;
import java.util.ArrayList;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.android.internal.util.XmlUtils;

import android.content.Context;
import android.content.res.XmlResourceParser;
import android.util.Log;

public class XmlParseConfig {
	private static final String LOG_TAG = "XmlParseConfig";
	
	//-----------------------------------------------------
	private static final int sXmlRes = R.xml.test_config;
	private static final String sXmlRootTag = "test_config";
	
		private static final String sXmlItemTag = "test_item";
		private static final String sXmlFolderTag = "test_folder";
		
			private static final String sXmlItemTagName = "item_name";
				private static final String sXmlItemTagNameValue1 = "item1";
				private static final String sXmlItemTagNameValue2 = "item2";
			
			private static final String sXmlFolderTagName = "folder_name";
				private static final String sXmlFolderTagNameValue1 = "folder1";
				private static final String sXmlFolderTagNameValue2 = "folder2";
	//-----------------------------------------------------
	
	private static ArrayList<String> sAll = new ArrayList<String>();
	
	public static void loadXmlCofig(Context context){
		XmlResourceParser parse = context.getResources().getXml(sXmlRes);
		
		try {
			XmlUtils.beginDocument(parse,sXmlRootTag);
			while(true){
				XmlUtils.nextElement(parse);
				String element = parse.getName();
				Log.d(LOG_TAG, "element is :"+element);
				
				if(element == null){
					break;
				}
				
				if(sXmlItemTag.equals(element)){
					String name = parse.getAttributeName(0);
					String value = parse.getAttributeValue(0);
					Log.d(LOG_TAG, "name is:"+name+",value is:"+value);
					if(!sXmlItemTagName.equals(name)){
						continue;
					}
					if(!sXmlItemTagNameValue1.equals(value)&&!sXmlItemTagNameValue2.equals(value)){
						continue;
					}
					
					String text = null;
					if(parse.next() == XmlPullParser.TEXT){
						text = parse.getText();
					}
					String temp = value+" = "+text;
					sAll.add(temp);
				}else if(sXmlFolderTag.equals(element)){
					String name = parse.getAttributeName(0);
					String value = parse.getAttributeValue(0);
					Log.d(LOG_TAG, "name is:"+name+",value is:"+value);
					if(!sXmlFolderTagName.equals(name)){
						continue;
					}
					
					if(!sXmlFolderTagNameValue1.equals(value)&&!sXmlFolderTagNameValue2.equals(value)){
						continue;
					}
					
					String text = null;
					if(parse.next() == XmlPullParser.TEXT){
						text = parse.getText();
					}
					String temp = value+" = "+text;
					sAll.add(temp);
				}else{
					
				}
			}
			
			for(String s:sAll){
				Log.d(LOG_TAG, "xml attrSet is:"+s);
			}
		} catch (XmlPullParserException e) {
            Log.e(LOG_TAG, "loadMmsSettings caught ", e);
        } catch (NumberFormatException e) {
            Log.e(LOG_TAG, "loadMmsSettings caught ", e);
        } catch (IOException e) {
            Log.e(LOG_TAG, "loadMmsSettings caught ", e);
        } finally {
            parse.close();
        }
		
	}
}


解析结果:

07-15 21:46:10.620: D/XmlParseConfig(10194): element is :test_item
07-15 21:46:10.620: D/XmlParseConfig(10194): name is:item_name,value is:item1
07-15 21:46:10.620: D/XmlParseConfig(10194): element is :test_item
07-15 21:46:10.620: D/XmlParseConfig(10194): name is:item_name,value is:item2
07-15 21:46:10.620: D/XmlParseConfig(10194): element is :test_folder
07-15 21:46:10.620: D/XmlParseConfig(10194): name is:folder_name,value is:folder1
07-15 21:46:10.620: D/XmlParseConfig(10194): element is :test_folder
07-15 21:46:10.630: D/XmlParseConfig(10194): name is:folder_name,value is:folder2
07-15 21:46:10.630: D/XmlParseConfig(10194): element is :null
07-15 21:46:10.630: D/XmlParseConfig(10194): xml attrSet is:item1 = 我们
07-15 21:46:10.630: D/XmlParseConfig(10194): xml attrSet is:item2 = 都是
07-15 21:46:10.630: D/XmlParseConfig(10194): xml attrSet is:folder1 = 好
07-15 21:46:10.630: D/XmlParseConfig(10194): xml attrSet is:folder2 = 孩子

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值