xml的使用及详解
来源:互联网 发布:华莱士 知乎 编辑:程序博客网 时间:2024/06/04 23:27
xml语言介绍
xml是w3c这个组织研发的
xml指可扩展(标签可以自己定义student)标记(标签)语言
xml的作用
①可以描述现实生活中的数据
②可以作为应用程序的配置文件 比如android工程的布局文件.
③作为应用程序传输的数据格式
xml的使用
常见的码表 assic --->iso-8859-1--->gbk gb2312(收录汉字不一样多)--->utf-8;
①直接使用eclipse创建既可
②文档声明 <?xml version="1.0" encoding="UTF-8"?>
③ xml对大小写敏感 开始标签和结束标签成对出现 xml必须有且仅有一个根标签 属性值必须加引号
④ xml中注释 <!-- -->
⑤ cdata区里面的内容不会被解析器解析
xml解析技术介绍
xml分类
特点:基于XML文档树的解析,将整个XML文件加载到内存中,会在内存中形成一颗树形结构
优点:整个文档树在内存中,便于操作,检索和更新效率高,可进行增删改查等逻辑操作;
缺点:由于整个XML文件(包含无用的节点)都被加载到内存中,浪费时间和空间。内存溢出可能性较大
使用场景:当需要对它进行增删改查等操作,并需要多次对它进行访问;硬件资源充足(CPU、内存)
SAX
特点:基于事件流的解析,根据文档内容顺序,一行一行进行解析,边解析边释放,会对整个文档进行解析,中间不能终止暂停
优点:占用内存小,解析速度快,内存溢出的可能性较小
缺点:操作复杂,只能进行查,不能进行增删改等逻辑操作;不能控制事件的处理主动结束;单向导航无法定位文挡层次,很难访问同一个文档中的不同部分数据;不持久,事件过后,若没保存数据,数据就丢了;从事件中只能得到文本,不知道该文本属于哪个元素
使用场景:只需XML文档的少量内容,很少回头访问,机器内存少
特点:是安卓中内置的解析器,它的解析原理类似SAX解析,都是基于事件的解析;不同的是,在pull解析中,我们需要自己获取产生的事件然后做出相应的操作,而SAX解析是由处理器触发一种事件的方法,执行我们的操作。
优点:可以在满足需要的条件后不再获取事件,结束解析;小巧轻便,解析速度快,简单易用
1 public static List<News> parserXml(InputStream is) { 2 List<News> lists=null; 3 News news = null; 4 // [1]获取解析器 xmlpullparser 5 XmlPullParser parser = Xml.newPullParser(); 6 // [2]设置解析器要解析的内容 7 try { 8 parser.setInput(is, "utf-8"); 9 // [3]获取解析器的事件类型10 int eventType = parser.getEventType();11 // [4]不到文件结尾就一直解析12 while (eventType != XmlPullParser.END_DOCUMENT) {13 // [5]具体判断一下解析到的标签 然后把我们关系的数据取出来 封装到集合中14 switch (eventType) {15 case XmlPullParser.START_TAG: //代表解析到的所有开始的标签16 //[6]具体判断一下解析到的是哪个开始标签17 if ("channel".equals(parser.getName())) {18 //[7]创建一个集合对象19 lists =new ArrayList<News>();20 }else if ("item".equals(parser.getName())) {21 //[8]创建javabean对象22 news = new News();23 }else if ("title".equals(parser.getName())) {24 //[8.1]获取文本的数据25 news.setTitle(parser.nextText());26 }else if ("description".equals(parser.getName())) {27 //[8.1]获取文本的数据28 news.setDescription(parser.nextText());29 }else if ("image".equals(parser.getName())) {30 //[8.1]获取文本的数据31 news.setImagepath(parser.nextText());32 }else if ("type".equals(parser.getName())) {33 //[8.1]获取文本的数据34 news.setType(parser.nextText());35 }else if ("comment".equals(parser.getName())) {36 //[8.1]获取文本的数据37 news.setComment(parser.nextText());38 }39 break;40 case XmlPullParser.END_TAG: //解析到的所有的结束标签41 if("item".equals(parser.getName())){42 //把bean对象加入到集合中43 lists.add(news);44 }45 break;46 }47 // 不停解析48 eventType = parser.next();49 }50 //最后把集合对象返回51 return lists;52 } catch (Exception e) {53 e.printStackTrace();54 return null;55 }56 }
阅读全文
0 0
- xml的使用及详解
- XML的概述及使用
- log4j.xml配置详解及log4j日志使用详解
- java解析XML-JDOM使用详解及实例
- java log4j.xml配置与使用 (详解及实例)
- TabLayout的使用及详解
- struts2的详解及使用
- AcitvityMQ的使用及详解
- okhttp的使用及详解
- SpannableString的使用及详解
- android中xml文件的使用详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- logback的使用和logback.xml详解
- 微信公众号和服务器连接
- luogu p1111 并查集
- python 入门学习3 链表
- python笔记
- PHP实习前3天学习笔记
- xml的使用及详解
- Map源码分析
- 226. Invert Binary Tree
- 表单验证---用户注册
- css 完美垂直居中解决方案兼容ie8以上等其他浏览器
- 注册和启动windows服务
- Linux基本命令大总结
- Android深度探索:HAL与驱动开发学习笔记--并发控制之顺序锁
- mysql5.7.19 winx64解压缩版安装配置教程