XML的XmlPullParser解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML的XmlPullParser解析相关的知识,希望对你有一定的参考价值。
参考技术Axml文件的解析有三种方式:
以下使用XmlPullParser来进行解析。
xml可以用在内容判断的时候,比如多种显示
例如a客户需要123
b客户只需要23
xml的读取方式:
1.获取当前的xml
2.对当前的xml以文档的形式进行遍历
想要读取xml需要使用XmlPullParser
这里需要注意的是XmlResourceParser构建的xmlPullParser不再需要额外设置解码类型和xml。
可以直接获取。
存放在res下,存放的目录不同读取的情况也不同。
XmlResourceParser在得到xml内容后不需要再设置解码方式。
XmlResourceParser是继承了XmlPullParser的
一般情况在本地的xml读取会判断一下xml是否存在。
下面以存放在raw目录下,使用XmlPullParserFactory来进行读取的方法
首先是xml
知识点补充:
如果还存在不懂的地方可以联系一下作者,我会帮忙解答!
解析XML
Pull解析
1、获取XmlPullParserFactory实例
XmlPullParserFactory factory = XmlPullParserFactory.newInstanc();
2、借助XmlPullparserFactory实例获取XmlPullParser对象
XmlPullParser xmlPullParser = factory.newPullParser();
3、调用setInput()解析数据
xmlPullParserl.setInput(new StringReader(xmlData));
4、调用getEvent()得到当前解析事件
int eventType = xmlPullParser.getEventType();
5、利用while循环解析
while(eventType != XmlPullParser.END_DOCUMENT){
String nodeName = xmlPullParser.getName();
switch(eventType){
case XmlPullParser.START_TAG:{
if("id".equals(nodeName)){
id = xmlPullParser.nextText();
}else if("name".equals(nodeName)){
name = xmlPullParser.nextText();
}else if("version".equals(nodeName)){
version = xmlPullParser.nextText();
}
break;
}
//完成解析某个节点
case XmlPullParser.END_TAG:{
if("app".equals(nodeName)){
Log.d("MainActivity","id is"+id);
Log.d("MainActivity","name is"+name);
Log.d("MainActivity","version is"+version);
}
break;
default:
break;
}
eventType = xmlPullParser.next();
}
......
SAX解析
1、创建一个类继承自DefaultHandler,并重写5个方法(startDocument()、startElement()、characters()、endElement()、endDocument())
2、创建SAXParserFactory实例
SAXParserFactory factory = SAXParserFactory.newInstance();
3、通过factory创建XMLReader对象
XMLReader xmlReader = factory.newSAXParser().getXMLReader();
4、创建ContentHandler对象
ContentHandler handler = new ContentHandler();
5、将ContentHandler的实例设置到XMLReader中
xmlReader.setContentHandler(handler);
6、开始解析
xmlParser.parse(new InputSource(new StringReader(xmlData)));
以上是关于XML的XmlPullParser解析的主要内容,如果未能解决你的问题,请参考以下文章
XmlPullParser:如何找出 START_TAG 是啥?
如何使用xmlpullparser解析android中的汉字