您的位置:首页 > 编程语言 > Java开发

JavaSE_XML解析__JDK自带动态解析

2016-10-28 19:01 183 查看
package com.saxxml.first;

 

 

import java.util.ArrayList;

import java.util.List;

 

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

 

import org.xml.sax.Attributes;

import org.xml.sax.ContentHandler;

import org.xml.sax.Locator;

import org.xml.sax.SAXException;

import org.xml.sax.XMLReader;

 

//封装书籍

public class SaxXml02 {

public static void main(String[] args)
throws Exception {

//获得SAX解析器工厂 SaxParserFactory

SAXParserFactory factory = SAXParserFactory.newInstance();

//获得解析器 SaxParser

SAXParser parser =  factory.newSAXParser();

//获得读取器  XmlReader

XMLReader reader =  parser.getXMLReader();

//设置读取器内容setContentHandler

final List books =
new ArrayList();

reader.setContentHandler(new MyContentHandler(){

Book book = null;

String currentTagName = null;

@Override

public void startElement(String uri, String localName,

String qName, Attributes atts) throws SAXException {

if("书".equals(qName)){

book = new Book();

}

currentTagName = qName;

}

@Override

public void characters(char[] ch,
int start, int length)

throws SAXException {

if("书名".equals(currentTagName)){

book.setName(new String(ch,start,length));

}

if("作者".equals(currentTagName)){

book.setAuthor(new String(ch,start,length));

}

if("价格".equals(currentTagName)){

book.setPrice(Float.parseFloat(new String(ch,start,length)));

}

}

 

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

if("书".equals(qName)){

books.add(book);

book = null;

}

currentTagName = null;

}

});

//关联XMl文本

reader.parse("src/book2.xml");

//System.out.println(books);

for(Object obj:books){

System.out.println(obj);

}

}

}

class MyContentHandler
implements ContentHandler{

@Override

public void setDocumentLocator(Locator locator) {

}

@Override

public void startDocument()
throws SAXException {

}

@Override

public void endDocument()
throws SAXException {

}
@Override

public void startPrefixMapping(String prefix, String uri)

throws SAXException {

}

@Override

public void endPrefixMapping(String prefix)
throws SAXException {

}

@Override

public void startElement(String uri, String localName, String qName,

Attributes atts) throws SAXException {

}

@Override

public void endElement(String uri, String localName, String qName)

throws SAXException {

}

@Override

public void characters(char[] ch,
int start, int length)

throws SAXException {

}

@Override

public void ignorableWhitespace(char[] ch,
int start, int length)

throws SAXException {

}

@Override

public void processingInstruction(String target, String data)

throws SAXException {

}

 

@Override

public void skippedEntity(String name)
throws SAXException {

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息