您好,欢迎访问一九零五行业门户网

XML文件使用SAX方法读取的示例代码

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>
handler.java类
package xmltes; import javax.xml.stream.events.characters; import javax.xml.stream.events.startelement; import org.xml.sax.attributes; import org.xml.sax.saxexception; import org.xml.sax.helpers.defaulthandler; public class handler extends defaulthandler{ private static int booknum = 0; //遍历xml文件的开始标签 @override public void startelement(string uri, string localname, string qname, attributes attributes) throws saxexception { // 调用defaulthandler父类的startelement方法 super.startelement(uri, localname, qname, attributes); //判断是不是有属性的标签/如book if(qname.equals("book")){ booknum++; system.out.println("====================开始遍历第"+booknum+"书的内容================"); //开始解析book元素 //已知book元素下属性的名称,可以根据名称判断 /* string value = attributes.getvalue("id"); system.out.println("book的属性值是" + value);*/ //如果不知道数的属性名称 int num = attributes.getlength(); for(int i=0;i<num;i++){ system.out.println("书的第" + (i+1) + "个属性名是:"+attributes.getqname(i)+"===属性值是:" + attributes.getvalue(i)); } }else if(!qname.equals("book") && !qname.equals("bookstore") ){ system.out.println("节点名是:" + qname); } } //遍历xml文件的结束标签 @override public void endelement(string uri, string localname, string qname) throws saxexception { // todo auto-generated method stub super.endelement(uri, localname, qname); //判断这本书是否遍历结束 if(qname.equals("book")){ system.out.println("====================结束遍历第"+booknum+"书的内容================"); } } @override public void characters(char[] ch, int start, int length) throws saxexception { // todo auto-generated method stub super.characters(ch, start, length); string value = new string(ch, start, length); if(!value.trim().equals("")){ system.out.println(value); } } //用来标识解析开始 @override public void startdocument() throws saxexception { // todo auto-generated method stub super.startdocument(); // system.out.println("进入标识解析开始方法"); } //用来标识解析结束 @override public void enddocument() throws saxexception { // todo auto-generated method stub super.enddocument(); // system.out.println("进入标识解析结束方法"); } }
test类
package xmltes; import java.io.ioexception; import javax.xml.parsers.parserconfigurationexception; import javax.xml.parsers.saxparser; import javax.xml.parsers.saxparserfactory; import org.xml.sax.saxexception; public class saxtest { public static void main(string[] args) { try { //获取一个saxparserfactory的实例 saxparserfactory factory = saxparserfactory.newinstance(); //通过factory获取saxparser实例 saxparser parser = factory.newsaxparser(); //创建一个saxparserhandler对象 handler handler = new handler(); parser.parse("001.xml", handler); } catch (parserconfigurationexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (saxexception e) { // todo auto-generated catch block e.printstacktrace(); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } }
以上就是xml文件使用sax方法读取的示例代码的详细内容。
其它类似信息

推荐信息