一、创建XML文件

目录结构:

二、新建一个带有main方法的类(SAXTest.java)
public class SAXTest {
public static void main(String[] args) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
SAXParserHandle handle = new SAXParserHandle();
parser.parse("books.xml", handle);
} 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();
}
}
}
三、新建Handle类,继承DefaultHandler
public class SAXParserHandle extends DefaultHandler {
/*
* 标识解析开始
* @see org.xml.sax.helpers.DefaultHandler#startDocument()
*/
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
System.out.println("----解析开始----");
}
/*
* 标识解析结束
* @see org.xml.sax.helpers.DefaultHandler#endDocument()
*/
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
System.out.println("----解析结束----");
}
/*
* 解析XML元素
* @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
*/
@Override
public void startElement(String arg0, String arg1, String name,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(arg0, arg1, name, attributes);
if(name.equals("book")){
System.out.println("==========开始遍历某一本书的内容==========");
int length = attributes.getLength();
for(int i=0;i<length;i++){
System.out.print("属性:"+attributes.getQName(i));
System.out.println("---值:"+attributes.getValue(i));
}
}else if(!name.equals("book") && !name.equals("bookstore")){
System.out.print("节点:"+ name);
}
}
@Override
public void endElement(String arg0, String arg1, String name)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(arg0, arg1, name);
if(name.equals("book")){
System.out.println("==========结束遍历某一本书的内容==========");
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
String nodeValue = new String(ch, start, length);
if(!nodeValue.trim().equals("")){
System.out.println("值:"+nodeValue);
}
}
}
解析结果:

本文介绍了如何使用Java的SAX解析器处理XML文件。首先,创建了一个XML文件,然后在SAXTest.java中定义了main方法,启动解析过程。接着,自定义了一个Handle类,继承自DefaultHandler,用于处理解析事件。详细解析了DefaultHandler中的关键方法。
684

被折叠的 条评论
为什么被折叠?



