<?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方法读取的示例代码的详细内容,更多请关注php中文网其它相关文章!
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
程序员必备接口测试调试工具:点击使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
网页生成APP,用做网站的技术去做APP:立即创建
手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包
相关文章
相关视频