java sax读写xml文件_java--xml文件读取(SAX)

packagecom.imooc_xml.sax.handler;importjava.util.ArrayList;importorg.xml.sax.Attributes;importorg.xml.sax.SAXException;importorg.xml.sax.helpers.DefaultHandler;importcom.imooc_xml.sax.entity.Book;public class SAXParserHandler extendsDefaultHandler {//使用全局变量可以使本类的各个方法通用,联系

int bookIndex = 0;

String value= null;

Book book= null;private ArrayList bookList = new ArrayList();public ArrayListgetBookList() {returnbookList;

}/*** 用来遍历xml文件的开始标签*/@Overridepublic voidstartElement(String uri, String localName, String qName,

Attributes attributes)throwsSAXException {//TODO Auto-generated method stub

super.startElement(uri, localName, qName, attributes);解析xml文件的节点属性,只有book节点有属性

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

book= newBook();

bookIndex++;//已知book的属性名//attributes.getValue("id");//不知book元素的属性名和个数

int num =attributes.getLength();for(int i=0;i

attributes.getQName(i);

attributes.getValue(i);if(attributes.getQName(i).equals("id")){

book.setId(attributes.getValue(i));

}

}

}else if (!qName.equals("book")&&!qName.equals("bookstore")){//节点名

System.out.println(qName);

}

}/*** 用来遍历xml文件的结束标签*/@Overridepublic voidendElement(String uri, String localName, String qName)throwsSAXException {//TODO Auto-generated method stub

super.endElement(uri, localName, qName);//判断是否针对一本书已经遍历结束

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

bookList.add(book);

book= null;

System.out.println("结束遍历第"+bookIndex+"本书");

}else if(qName.equals("name")){

book.setName(value);

}else if(qName.equals("author")){

book.setAuthor(value);

}else if(qName.equals("year")){

book.setYear(value);

}else if(qName.equals("price")){

book.setPrice(value);

}else if(qName.equals("language")){

book.setLanguage(value);

}

}

@Overridepublic void characters(char[] ch, int start, intlength)throwsSAXException {//TODO Auto-generated method stub

super.characters(ch, start, length);//ch是节点之间的文本内容

value = newString(ch, start, length);//判断空格和换行

if(!value.trim().equals("")){

System.out.println(value);

}

}/*** 用来标志解析开始*/@Overridepublic void startDocument() throwsSAXException {//TODO Auto-generated method stub

super.startDocument();

System.out.println("SAX解析开始");

}/*** 用来标志解析结束*/@Overridepublic void endDocument() throwsSAXException {//TODO Auto-generated method stub

super.endDocument();

System.out.println("SAX解析结束");

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值