javaIO--通过SAX方式解析xml文件简例

来源:互联网 发布:淘宝账号一天能刷几单 编辑:程序博客网 时间:2024/05/21 22:53

//先创建的xml文件

<?xml version="1.0"  encoding="utf-8"?><bookstore><book id="1">       <name>三体</name><author>刘慈欣</author><year>2014</year></book><book id="2">       <name>无情剑</name><author>古龙</author><year>1995</year></book></bookstore>
//主类的执行代码

package com.xml;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.SAXException;import org.xml.sax.SAXParseException;public class Sax {//通过SAX方式解析xml文件public static  void jiexi() throws Exception{SAXParserFactory factory=SAXParserFactory.newInstance();SAXParser p=factory.newSAXParser();hand h= new  hand();//创建一个hander对象p.parse("books.xml", h);}public static void main(String[] args) throws Exception{jiexi();}}

//重写继承自DefaultHandler类中的一些方法,如下:


<span style="font-size:24px;">package com.xml;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class hand extends DefaultHandler {int bookindex=1;//重写遍历xml的开始标签和结束标签@Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {// TODO Auto-generated method stubsuper.startElement(uri, localName, qName, attributes);//当属性名为book时开始解析if(qName.equals("book")){System.out.println("---开始对第"+bookindex+"书进行解析---");int a=attributes.getLength();//输出属性名:System.out.println("属性名为:"+qName);//遍历属性for(int i=0;i<a;i++){System.out.println("属性值为:"+attributes.getValue(i));}}else{if(!qName.equals("bookstore")){System.out.print("节点名为:"+qName+"   ");}}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {// TODO Auto-generated method stubsuper.endElement(uri, localName, qName);if(qName.equals("book")){System.out.println("---结束对第"+bookindex+"书进行解析---");bookindex++;}}</span><span style="font-size:32px;">//重写开始解析和结束解析的方法</span><span style="font-size:24px;">@Overridepublic void startDocument() throws SAXException {// TODO Auto-generated method stubsuper.startDocument();System.out.println("开始解析");}@Overridepublic void endDocument() throws SAXException {// TODO Auto-generated method stubsuper.endDocument();System.out.println("结束解析");}/* (non-Javadoc) * @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int) */@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {// TODO Auto-generated method stubsuper.characters(ch, start, length);String str= new  String(ch, start, length);//如果去掉空格部为空if(!str.trim().equals("")){System.out.println("节点值为:"+str);}}}</span>




0 0
原创粉丝点击