java xml util_XmlUtil.java

package com.mcx.terminal.utils;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.HashMap;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlPullParserException;

import android.content.Context;

import android.util.Xml;

/**

* XmlUtil

* @author zhongdaxia 2014-02-27 20:24:59

* 算法粗糙,但接口便捷,适用性实用性强,适用于简单xml解析

*

*/

public class XmlUtil {

Context mContext;

public XmlUtil(Context context) {

this.mContext = context;

}

private InputStream getXmlFile(String xmlName) {

try {

InputStream inStream = this.mContext.getResources().getAssets().open(xmlName);

return inStream;

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

/**

* ParserXml

* @param xmlFileName xml文件名

* @param parentsKey 父键值

* @param childsKey 子键值列表

* @example

* xml:

* <?xml version="1.0" standalone="yes"?>

1001

1.0.0.1402

1.0.0.1402

1

1

1

1-10

1

11-20

2

21-30

3

31,32,33,34,35

1

36,37,38,39

2

40

3

code:

* String parentsKey = "Box";

public String [] childsKey = {"devId","softVer","hardVer","boxSpecVer","adminPhone","adminPsw"}; // 系统信息子列表键值

ParserXml("ini.xml",parentsKey,childsKey);

return:

[{Id=1-10, sizeType=1}, {Id=11-20, sizeType=2}, {Id=21-30, sizeType=3}, {Id=31,32,33,34,35, sizeType=1}, {Id=36,37,38,39, sizeType=2}, {Id=40, sizeType=3}]

*/

public ArrayList> ParserXml(String xmlFileName, String parentsKey, final String [] childsKey) {

ArrayList> mapList = new ArrayList>();

HashMap mapTemp = new HashMap();

boolean isChildCheck = false;

InputStream inStream = getXmlFile(xmlFileName);

if (null != inStream) {

XmlPullParser pullParser = Xml.newPullParser();

try {

pullParser.setInput(inStream, "UTF-8");

int event = pullParser.getEventType();

while (event != XmlPullParser.END_DOCUMENT) {

switch (event) {

case XmlPullParser.START_DOCUMENT:

break;

case XmlPullParser.START_TAG:

String skeyName = pullParser.getName();

if(isChildCheck)

{

for(int i = 0 ; i < childsKey.length ; i++)

{

String key = childsKey[i];

if(null != key && skeyName.equals(key))

{

String value = pullParser.nextText();

mapTemp.put(key, value);

}

}

}

// 父键值匹配

if(skeyName.equals(parentsKey))

{

// 进入子键值匹配

isChildCheck = true;

}

break;

case XmlPullParser.END_TAG:

String ekeyName = pullParser.getName();

if(ekeyName.equals(parentsKey))

{

isChildCheck = false;

HashMap map = new HashMap();

map = (HashMap) mapTemp.clone();

mapList.add(map);

}

break;

default:

break;

}

event = pullParser.next();

}

return mapList;

} catch (XmlPullParserException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

return mapList;

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值