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
原始数据
按行查看
历史