栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 人工智能 > NLP

android pull 解析xml方式

NLP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android  pull 解析xml方式

pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字,
读取到xml的声明返回数字0 START_document;
读取到xml的结束返回数字1 END_document ;
读取到xml的开始标签返回数字2 START_TAG
读取到xml的结束标签返回数字3 END_TAG
读取到xml的文本返回数字4 TEXT

pull是开源的项目 源码下载地址https://www.mshxw.com/

被解析的xml文档和android dom 解析xml方式 中的xml文档一样,命名为pullTest.xml.

private String pullParseXml(InputStream inputStream) {String result = "";//解析全部的xmlboolean isParse = true;try {// 创建一个xmlPullParser的工厂XmlPullParserFactory factory = XmlPullParserFactory.newInstance();// 获取一个解析实例XmlPullParser parse = factory.newPullParser();// 设置输入流的编码格式parse.setInput(inputStream, "UTF-8");// 当前事件的类型int eventType = parse.getEventType();while (XmlPullParser.END_document != eventType) {// 当前节点的名称String nodeName = parse.getName();switch (eventType) {case XmlPullParser.START_TAG:if ("group".equals(nodeName)) {// 解析节点中的属性值,getAttributeCount()获取属性的个数for (int i = 0; i < parse.getAttributeCount(); i++) {// 属性名称String groupName = parse.getAttributeName(i);// 属性名称对应的值String namevalue = parse.getAttributevalue(i);result = result + groupName + " = " + namevalue;}result += "n";} else if ("person".equals(nodeName)) {String personName = parse.getAttributevalue(0);String age = parse.getAttributevalue(1);result = result + "personName = " + personName+ "age =" + age + "n";} else if ("chinese".equals(nodeName)) {//节点对应的文本String chinese = parse.nextText();Pattern p = Pattern.compile("\s*|t|r|n");Matcher m = p.matcher(chinese);chinese = m.replaceAll("");result = result + "chinese = " + chinese;} else if ("english".equals(nodeName)) {String english = parse.nextText();Pattern p = Pattern.compile("\s*|t|r|n");Matcher m = p.matcher(english);english = m.replaceAll("");result = result + "english = " + english + "n";}break;case XmlPullParser.END_TAG://在解析到一个group节点完成时,退出解析xml文件//if("group".equals(nodeName)){//eventType = XmlPullParser.END_document; //isParse = false;//}break;default:break;}//整个xml文件全部解析if(isParse){eventType = parse.next();}}} catch (XmlPullParserException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}

pull和sax不同最主要的体现在pull可以由客户随时终止解析xml.sax解析,只能从文档头一直读到尾,中间不能停止也不能对文件进行修改。直到解析完了整个文档才会返回。

//在解析到一个group节点完成时,退出解析xml文件//if("group".equals(nodeName)){//eventType = XmlPullParser.END_document; //isParse = false;//}



只要满足退出解析的条件,只需要设置如下代码即可。

eventType = XmlPullParser.END_document;


pull解析方式用到的方法,大部分我都在代码中注释了。


以上就是android pull 解析xml方式 的内容,更多相关内容请关注PHP中文网(www.kaotop.com)!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/794861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号