在Android开发中,解析和读取xml是难免的.如何选择作为xml解析的工具类呢?因为是基于Android移动平台开发,那么内存就显得弥足珍贵了.
DOM、SAX、Pull,推荐使用SAX、Pull作为xml的解析工具类,它们比和Dom相比,解析速度要快,占用系统内存少.
Pull解析XML文件:
public static List<Person> parseXml(InputStream inStream)
throws XmlPullParserException, IOException {
List<Person> persons = null;
Person person = null;
// 使用Android提供的Xml创建pull解析器
XmlPullParser xmlPullParser = Xml.newPullParser();
// 设置流文件
xmlPullParser.setInput(inStream, "UTF-8");
// 产生第一个事件
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {// 如果不是文档末尾
String tag = xmlPullParser.getName();//获取节点名
Log.i(TAG, tag+"====>");
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if ("person".equals(tag)) {
person = new Person();
person.setPersonId(Integer.valueOf(xmlPullParser.getAttributeValue(0)));
} else if ("name".equals(tag)) {
//注意:这里获取文本元素是通过nextText()不是getText()
person.setPersonName(xmlPullParser.nextText());
} else if ("age".equals(tag)) {
person.setPersonAge(Integer.valueOf(xmlPullParser.nextText()));
}
break;
case XmlPullParser.END_TAG:
if("person".equals(tag))
persons.add(person);
break;
}
eventType = xmlPullParser.next();// 推进到下一个元素,并触发事件
}
return persons;
}
写入Xml文件到Android系统:
public static void writeXml(List<Person> persons,OutputStream outStream) throws IllegalArgumentException, IllegalStateException, IOException{
XmlSerializer xmlSerializer = Xml.newSerializer();
xmlSerializer.setOutput(outStream, "UTF-8");
xmlSerializer.startDocument("UTF-8", true);//--><?xml ... ?>
xmlSerializer.startTag(null, "persons");
for(Person person:persons){
xmlSerializer.startTag(null, "person");
xmlSerializer.attribute(null, "id", person.getPersonId().toString());
xmlSerializer.startTag(null, "name");
xmlSerializer.text(person.getPersonName());
xmlSerializer.endTag(null, "name");
xmlSerializer.startTag(null, "age");
xmlSerializer.text(person.getPersonAge().toString());
xmlSerializer.endTag(null, "age");
xmlSerializer.endTag(null, "person");
}
xmlSerializer.endTag(null, "persons");
xmlSerializer.endDocument();
outStream.flush();//要刷新缓冲区
outStream.close();
Log.i(TAG, outStream.toString());
}
分享到:
相关推荐
NULL 博文链接:https://justsee.iteye.com/blog/930603
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一个解析速度快并且占用内存少的...
Android中采用Pull解析器读取和生成xml内容案例...
一、使用Pull解析器读取XML文件 除了可以使用SAX或DOM解析XML文件之外,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器是一个开源的java项目,既可以用于android,也可以用于JavaEE。如果用在...
通过网络获取xml文件,使用pull解析该文件得到服务器中的信息;
@Introduction:使用PULL方法进行XML解析 XML文件存放在SDcard根目录下;android1.6版本之前是在/sdcard/,之后是在/mnt/sdcard/ 当前测试用来运行的版本是android。4.2.2 最小支持的版本是android.2.2.0 文件...
读取和解析xml文件
运用pull解析特殊类型的XML,Demo展示为解析Sring-array类型的数据 博客地址:https://blog.csdn.net/qq569699973 南京市 苏州市 无锡市 </resources>
在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。
pull读写解析XML和Json读写解析
android 应用程序 做的 解析xml 用了三种技术 sax dom pull 三种解析xml的常用技术 另外还有一些怎么快速的让指定文件读取到xml文件中
一、基本介绍 Android中极力推荐xmlpull方式解析xml。 xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。 jar包下载网址 ...
Dom4j解析xml与配置文件的小例子,简单的Dom4j的小应用。
读取到xml的文本返回数字4 TEXT,只要这个事件返回的不是1 我们就一直读取xml文件 如果当前元素的下一个元素是文本节点 就可以直接用nextText()这个方法来得到文本节点的内容,没有结束xml文件就推到下个进行解析
android中读写xml文件简单demo,可以通过此代码来简单的读取xml配置文件
解析XML文件:在Android平台上可以使用SAX、DOM和Android附带的pull解析器解析XML文件;pull解析器提供了各种事件,使用parser.next()方法进入下一个元素并触发相应事件,pull解析器产生的事件是一个数字,可以通过...
(1)pull读取xml文件后触发相应的事件调用方法返回的是数字 (2)pull可以在程序中控制想解析到哪里就可以停止解析。 来看看实例: book.xml如下: <?xml version=1.0 encoding=UTF-8?> <name>thin
此示例介绍了xml的三种解析方式,包括SAX解析,dom解析,pull解析 并介绍了读取文件的方法,怎么写入xml文件等内容,希望对您有所帮助,谢谢。
很多时候我们需要将资源文件以XML形式放在assets文件夹下,我写的这个demo是一个比较通用的获取xml输入流,解析xml获取想要数据的方法,希望对大家有帮助。