JavaSE_XML解析__JDK自带动态解析

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 {

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值