java--SAX解析xml
来源:互联网 发布:unity3d找工作好难 编辑:程序博客网 时间:2024/06/04 20:00
有下面的xml文件,如何解析
<?xml version="1.0" encoding="UTF-8"?><bookstore> <book id="1"> <name>王小二的妖孽人生</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </book> <book id="2"> <name>安徒生童话</name><year>2004</year> <price>77</price> <language>English</language> </book></bookstore>
首先创建sax相关类
package saxXML;import java.io.IOException;import java.util.ArrayList;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.SAXException;import sax3.Book;import saxXML2.SaxHandler;public class SaxTest { public static void main(String[] args) { SAXParserFactory factory = SAXParserFactory.newInstance(); try { SAXParser parser = factory.newSAXParser(); SaxHandler handler = new SaxHandler(); parser.parse("booKs.xml", handler); ArrayList<Book> arrayList=handler.getArrayList(); System.out.println("数组的大小"+arrayList.size()); for (Book book : arrayList) { System.out.println("图书序列"+book.getId()); System.out.println("["+book.getName()+"]"); System.out.println("作者"+book.getAuthor()); System.out.println("价格"+book.getPrice()); System.out.println("年份"+book.getYear()); } } catch (ParserConfigurationException | SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
实现DefaultHandler 类
package saxXML2;import java.util.ArrayList;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import sax3.Book;public class SaxHandler extends DefaultHandler { String valueString=""; Book book=null; ArrayList<Book> bookList=new ArrayList<Book>(); public ArrayList<Book> getArrayList() { return bookList; }@Overridepublic void startDocument() throws SAXException { // TODO Auto-generated method stub super.startDocument(); System.out.println("startDocument");}@Override public void endDocument() throws SAXException { // TODO Auto-generated method stub super.endDocument( ); System.out.println("endDocument"); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); if (qName.equals("book")) {//对于book节点 book=new Book(); for (int i = 0; i < attributes.getLength(); i++) { System.out.print(attributes.getQName(i)+ " "); System.out.println(attributes.getValue(i)); if (attributes.getQName(i).equals("id")) { book.setId(attributes.getValue(i));//这里属性值就是id } } } //对于其他节点,滤掉-- if (!qName.equals("book")&&!qName.equals("bookstore")) { System.out.print("(qName)"+qName); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); //找那两本书的book的结束标记 if (qName.equals("book")) { System.out.println(); System.out.print("=====遍历一本书结束"); bookList.add(book); book=null; } else if (qName.equals("name")) { book.setName(valueString); } else if(qName.equals("price")) { book.setPrice(valueString); } else if (qName.equals("author")) { book.setAuthor(valueString); } else if (qName.equals("lanuage")) { book.setAuthor(valueString); } else if (qName.equals("year")) { book.setYear(valueString); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub super.characters(ch, start, length); valueString=new String(ch,start,length) ; if (!valueString.trim().equals("")) { System.out.println("(charactors)"+valueString); } }}
书籍类用于存放xml里面对象
package sax3;public class Book { private String id; private String name; private String author; private String year; private String price; private String lanuage;public String getId() { return id;}public void setId(String string) { this.id = string;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getAuthor() { return author;}public void setAuthor(String author) { this.author = author;}public String getYear() { return year;}public void setYear(String year) { this.year = year;}public String getPrice() { return price;}public void setPrice(String price) { this.price = price;}public String getLanuage() { return lanuage;}public void setLanuage(String lanuage) { this.lanuage = lanuage;}}
0 0
- java sax 解析 xml
- java SAX 解析XML
- Java Sax解析xml
- JAVA SAX解析xml
- java SAX解析XML
- Java Sax解析xml
- Java Sax 解析 xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java sax解析xml
- Java Sax解析xml
- java sax解析xml
- Java Sax解析XML
- Java Sax解析xml
- 优秀管理者必看--你的下属跳槽的八大征兆,你注意到了吗?(超级准,不看后悔的。。。)
- java 状态码详解
- perl JMX::Jmx4Perl
- MR避免切分
- "GeForce GTX 850M" 的CUDA参数
- java--SAX解析xml
- Codeforces Round #322 (Div. 2) A、B、C
- 股市热点与周期的规律(转载)
- matlab一些基本重要的指令
- 本地化(不基于系统语言)
- nginx 优化(突破十万并发)
- android四种更新UI的方法
- 定义文件流对象,统计字符个数(C/C++源程序)
- 追MM与设计模式