XML详解-pull解析
2017-07-27 10:10
190 查看
XML
概述:XML可扩展标记语言,是一种标记语言,和HTML类似 <itcast>南昌大学</itcast> xml的作用: 被设计用来描述数据 1.XML文作为配置文件使用 2.通用数据交换
XML基本语法
1.声明:必须写在第一行 <?xml version="1.0" encoding="utf-8" standalone="yes"?> 属性: version:表示XML的版本,默认1.0,目前w3c只有这一个版本 encoding:告诉解析器应该使用的编码格式 standalone:表示XML文档是否独立:取值 true:是 false:否 2、元素 <元素名称></元素名称> 元素规则: 1.区分大小写 2.标签有开始和结束 3.有且只有一个根标签 4.标签应该正确嵌套 3.元素属性:属性值使用单引号或者双引号 4.注释 <!--这里是注释的内容--> 5.CDTATA区 忽略文本中的特殊符号(把特殊的符号当成普通的文本) 语法: <![CDATA[需要包含的内容]]> 6.特殊符号 7.处理指令
XML解析
XML解析的思想: 1.DOM思想: 把整个XML文件装入内存,把其各个部分封装成对象。整个文档形成一个DOM数,然后再进行解析处理 优点: 由于在DOM数上能够表示各个节点之间的层次关系,所以可在节点上进行增删改查操作方便 缺点:由于DOM解析需要将整个文档装入内存,文件过大浪费资源 2.SAX思想: 基于事件驱动,逐行读取 优点: 由于是逐行读取,性能好,不浪费资源 缺点: 不能够明确节点之间的层次关系,所以只能读取数据,不能修改 XML解析器: JAXP:sun公司的标准,支持dom和Sax两种解析思想 Jdom:支持DOM思想 DOM4j:民间组织,是目前世界上主流的DOM解析器, pull:微操作系统,比较小巧,支持sax思想
pull解析器的基本用法
使用pull的步骤: 读取XML文件的步骤 1.需要导入pull的jar包, 2.创建解析器的工厂 3.创建解析器 4.设置输入 5.解析XML文件 import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; /** * Created by Administrator on 2017/7/11. */ public class PullparseXml { public static void main(String[] args)throws Exception{ //1.导入pull驱动 //2.创建pull解析工厂 XmlPullParserFactory factory= XmlPullParserFactory.newInstance(); //3.创建pull解析器 XmlPullParser parse=factory.newPullParser(); //4.设置输入流 // /parse.setInput(new jFileInputStream("src/abc.xml"),"UTF-8"); //int eventType=parse.getEventType(); //parse.next(); int eventType=-100; while ((eventType=parse.getEventType())!=XmlPullParser.END_DOCUMENT) parse.next(); } }
使用pull解析器把XML数据封装成Java对象(读XML)---反序列化
1.定义一个XML文件 <?xml version="1.0" encoding="utf-8" standalone="no" ?> <books> <book isbn="b001"> <bookname>Java编程</bookname> <author>张三</author> <price>39.00</price> </book> <book isbn="b002"> <bookname>Javase编程</bookname> <author>张三</author> <price>39.00</price> </book> </books> 解析思路: 1.当读取到事件的类型为start_tag时且元素名称为books的时候创建集合对象 2.当读取到事件的类型为start_tag时且元素为book时,创建book对象,同时获取book元素的属性为book对象的属性赋值 3.当读取到事件的类型为start_tag时且元素名称为bookname,获取bookname元素的文本为book对象的属性赋值 4.当读取到事件的类型为start_tag时且元素名称为author,获取author元素的文本为book对象的属性赋值 5.当读取到事件的类型为start_tag时且元素名称为price,获取price元素的文本为book对象的属性赋值 6.当读到事件类型为end_tag时,且元素名称为book时,把book放到集合中 例如: import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import java.awt.print.Book; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2017/7/11. */ public class PullparseXml { public static void main(String[] args)throws Exception{ //1.导入pull驱动 //2.创建pull解析工厂 XmlPullParserFactory factory= XmlPullParserFactory.newInstance(); //3.创建pull解析器 XmlPullParser parse=factory.newPullParser(); //4.设置输入流 parse.setInput(new FileInputStream("web/WEB-INF/book.xml"),"utf-8"); //存储事件类型 int eventType=-99; //存放图书的信息 List<Book> books=null; //定义图书信息的对象 Book book=null; //遍历XML文档 while ((eventType=parse.getEventType())!=XmlPullParser.END_DOCUMENT){ //获取元素的名称 String elementName=parse.getName(); //判断元素是否是开始元素 if(eventType==XmlPullParser.START_TAG){ //当读取到事件的类型为start_tag时且元素名称为books的时候创建集合对象 if("books".equals(elementName)){ //创建集合对象 books=new ArrayList<Book>(); }else if("book".equals(elementName)){ //当读取到事件的类型为start_tag时且元素为book时, // 创建book对象,同时获取book元素的属性为book对象的属性赋值 book=new Book(); //取得book的isbn属性为book对象属性赋值 //第一个参数:表示命名空间 //第二个参数:XML文档中元素的属性名称 String isbn=parse.getAttributeValue(null,"isbn"); book.setIsbn(isbn); }else if("bookname".equals(elementName)){ // 当读取到事件的类型为start_tag时且元素名称为bookname, // 获取bookname元素的文本为book对象的属性赋值 //获取元素的文本值 String bookname=parse.nextText(); book.setBookname(bookname); }else if("author".equals(elementName)){ // 当读取到事件的类型为start_tag时且元素名称为author, // 获取author元素的文本为book对象的属性赋值 //获取元素的文本值 String author=parse.nextText(); book.setAuthor(author); } else if("price".equals(elementName)){ // 当读取到事件的类型为start_tag时且元素名称为price,\ // 获取price元素的文本为book对象的属性赋值 //获取元素的文本值 String price=parse.nextText(); book.setPrice(Float.parseFloat(price)); } }else if(eventType==XmlPullParser.END_TAG){ //表示结束元素 //判断是否是book结尾 if("book".equals(elementName)){ //将book存放到集合中 books.add(book); } } parse.next(); } for (Book b:books ) { } } }
使用pull把Java对象信息写入XML---序列化
使用pull写入XML文件的步骤: 1.导入pull的jar包, 2.创建解析器工厂 3.创建序列化对象 4.设置输出 5.将Java中的数据存放到XML中 例如: import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; import java.awt.print.Book; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2017/7/11. */ public class PullparseXml { public static void main(String[] args)throws Exception{ //创建书的对象 Book book=new Book(); //创建解析器工厂 XmlPullParserFactory factory=XmlPullParserFactory.newInstance(); //创建序列化的对象 XmlSerializer ser=factory.newSerializer(); //设置输出流 ser.setOutput(new FileOutputStream("web/WEB-INF/book.xml"),"UTF-8"); //设置开始文档 ser.startDocument("UTF-8",false); //获取标签 ser.startTag(null,"书库"); ser.startTag(null,"书"); ser.attribute(null,"版权",book.getIsbn()); ser.startTag(null,"书名"); //处理文本 ser.text(book.getBookname); ser.endTag(null,"书名"); ser.startTag(null,"作者"); //处理文本 ser.text(book.getAuthor()); ser.endTag(null,"作者"); //结束标签 ser.endTag(null,"书"); ser.endTag(null,"书库"); //结束文档 ser.endDocument(); } }
相关文章推荐
- Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法
- jquery+Ajax框架处理,XML,JSON,GSON对象传送!详解+案列!struts2的支持
- web.xml 详解
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- Spring MVC的web.xml配置详解(转)
- maven pom.xml详解(三)
- mybatis 详解(二)------入门实例(基于XML)
- 详解Java解析XML的四种方法
- Ant之build.xml详解
- Xml中SelectSingleNode用法详解
- java web工程web.xml配置详解
- Spring中,applicationContext.xml 配置文件在web.xml中的配置详解
- Delphi 中的 XMLDocument 类详解(7) - 获取节点名称与节点的属性名称
- java日志处理组件log4j--log4j.xml配置详解
- C#解析XML详解(XPath以及带命名空间NameSpace)
- Delphi 中的 XMLDocument 类详解(18) - 更好地显示 xml 的测试结果 - FormatXMLData 及其他
- Delphi 中的 XMLDocument 类详解(21) - 暂停
- Maven系列--setting.xml 配置详解
- AndroidManifest.xml详解
- web.xml加载顺序详解