使用Sax和Pull方法 解析XML文件
来源:互联网 发布:leetcode面试题js 编辑:程序博客网 时间:2024/06/01 07:28
xml 可扩展标签语言
结构良好的xml文档
1.标签成对出现
2.根元素有且只有一个
3.大小写敏感
4.不能嵌套和交叉
5.属性要用双引号或者单引号
6.包含xml声明
解析MXL文件 Sax解析的步骤
1.创建工厂 SaxParserFactory
2.创建解析器 AaxParser
3.创建读取器XmlReader
4.设置时间处理器 SetContentHandler();
5.解析 parse(“路径”)
额外: 创建事件处理器
例 : books.xml文件
<?xml version="1.0" encoding="UTF-8"?><bookstore> <book category='java'> <title lang="english">java基础</title> <author>gosling</author> <year>2014</year> <price>200</price> </book> <book category="android"> <title lang="chinese">android基础</title> <author>google</author> <year>2014</year> <price>20</price> </book></bookstore>书籍类
public class Book { private int id; private String bookname; private String author; private double price; public Book() { // TODO Auto-generated constructor stub } public Book(int id, String bookname, String author, double price) { super(); this.id = id; this.bookname = bookname; this.author = author; this.price = price; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getBookname() { return bookname; } public void setBookname(String bookname) { this.bookname = bookname; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public void showInfo(){ System.out.println("id:"+id+" bookname:"+bookname+" author:"+author+" price:"+price); }}
用SAX解析@需求分析: 要求:把 books.xml文件中的书籍信息封装成对象,然后放入集合中Public class SAXMain{ public static void main(String[]args) throws Exception{ //创建工厂 SAXParserFactory factory=SAXParserFactory.newInstance(); //2.创建解析器 SAXParser parser = factory.newSAXParser(); //3.获取xmlreader XMLReader reader = parser.getXMLReader(); //4.设置处理器 BookContentHandler handler=new BookContentHandler(); //5.解析 reader.parser("xml\\books.xml"); //6.遍历集合 }}//事件处理器class BookContentHandler extends DefaultHandler{ ArraryList<Book> books = new ArrayList<Book>(); Book book=null; String currentTagName;//当前读到的开始标签 public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException { //把当前读到的标签设置到currentTagName currentTagName = qName; if(qName.equals("book")) { book = new Bok(); //获取id String id=attributes.getValue("id"); book.setID(Integer.parseInt(id)); } public void endElement(String uri, String localName, String qName)throws SAXException { currentTagName="";//跳过空格和换行 if(qName.equals("book")) { books.add(book);//添加到集合 book=null; } } public void characters(char[] ch, int start, int length) throws SAXException { //判断bookname if(currentTagName.equals("bookname")) { book.setBookname(new String(ch,start,length)); }else if(currentTagName.equals("author")) { book.setAuthor(new String(ch,start,length)); }else if(currentTagName.equals("price")) { double price=Double.parserDouble(new String(ch,start,length)) book.setPrice(price); } } }}PULl解析1 创建工厂 XmlPullParserFactory2 创建解析器 XmlPullParser3 设置读取的文件流4 获取第一个事件类型5 while循环读取 type=parser.next(); 下一个类型 parser.getName() 获取标签名称 parser.nextText(); 获取标签中的内容@需求分析: 使用PULL方式解析books.xml ,封装成书对象,然后放入集合public class PullMain{ public static void main(String[]args) throws Exception{ //1.创建工厂 XmlPullParserFactory factory=XmlPullParserFactory .newInstance(); //2.创建解析器 XmlPullParser parser = factory.newPullParser(); //3.设置要读取的xml文件,并指定编码 parer.setInput(new FileInputStream("xml\\books.xml"),"gbk"); //4.获取第一个事件类型 int type=parser.getEventType(); ArrayList<Book>books=new ArraryList<book>(); Book book=null; while(type!=XmlPullParser.END_DOCUMENT) { switch(type) { case XmlPullParser.STATR_TAG: //getName()获取标签名称 if(parser.getName().equals("book")) { book = new Book(); //获取id String id=parser.getAttributeValue(null,"id"); book.setId(Integer.parserInt(id)); }else if(parser.getName().equals("bookname")) { book.setBookname(parser.nextText()); }else if(parser.getName().equals("author")) { book.setAuthor(parser.nextText()); }else if (parser.getName().equals("price")) { String price = parser.nextText(); book.setPrice(Double.parseDouble(price)); } break; case XmlPullParser.END_TAG:// 3 //当读取book结束标记的时候 ,添加到集合中 if (parser.getName().equals("book")) { books.add(book); } break; } //获取下一个事件 type = parser.next(); } for (Book b : books) { b.showInfo(); } }}
0 0
- 使用Sax和Pull方法 解析XML文件
- pull和sax解析xml文件
- PULL和SAX解析xml文件
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Java-使用SAX,DOM,pull解析XML文件以及pull解析生成xml文件
- 使用SAX或者DOM或者pull解析XML文件
- Android 使用SAX或者DOM或者pull解析XML文件
- 使用SAX或者DOM或者pull解析XML文件
- Android 使用SAX或者DOM或者pull解析XML文件
- Android 中的XML 解析方法Pull 和Sax
- XML解析方法(Pull和Sax以及DOM)
- 使用Pull和SAX解析XML格式数据
- Android xml文件解析 SAX,DOM,PULL
- Dom、Sax、Pull解析xml文件
- XML文件解析汇总SAX/DOM/PULL
- Android使用pull方法解析XML文件
- Pull解析XML文件,使用HttpClient方法
- 一个类型转换的讨论
- Vector和ArrayList比较
- 第一章:java基础
- 汽车租赁系统
- mysql与PHP交互
- 使用Sax和Pull方法 解析XML文件
- Ubuntu下的DNS服务器客户端
- 何如在ADT中使用genymotion进行测试
- 【Servlet】实现简单的验证码生成与验证
- Android 开发环境下载地址
- 站在巨人的肩膀上学习
- 错误Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1
- ubuntu下用命令行安装Qt
- java(1)--集合框架