import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.Locator; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; import org.xml.sax.helpers.DefaultHandler; import java.io.IOException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; class TestSAX extends DefaultHandler { private StringBuffer buf; public TestSAX() { super(); } public void setDocumentLocator(Locator locator) { } public void startDocument() throws SAXException { buf=new StringBuffer(); System.out.println("*******开始解析文档*******"); } public void endDocument() throws SAXException { System.out.print(buf); System.out.println("*******文档解析结束*******"); } public void startPrefixMapping( String prefix, String uri ) { System.out.println(" 前缀映射: " + prefix +" 开始!"+ " 它的URI是:" + uri); } public void endPrefixMapping( String prefix ) { System.out.println(" 前缀映射: "+prefix+" 结束!"); } public void processingInstruction( String target, String instruction ) throws SAXException { } public void ignorableWhitespace( char[] chars, int start, int length ) throws SAXException { } public void skippedEntity( String name ) throws SAXException { } /** * @param atts 节点属性信息 */ public void startElement(String namespaceURI,String localName,String qName,Attributes atts) { System.out.println("*******开始解析元素*******"); System.out.println("元素名"+qName); System.out.println("元素名2"+localName); //获取共有几个节点属性,例如<journal name="abc" price="100">waewqwqsda</journal>中的name,price for(int i=0;i<atts.getLength();i++) { System.out.println("元素名"+atts.getLocalName(i)+"属性值"+atts.getValue(i)); } } public void endElement(String namespaceURI,String localName,String fullName )throws SAXException { System.out.println("******元素解析结束********"); } public void characters( char[] chars, int start, int length )throws SAXException { //将元素内容累加到StringBuffer中,例如<journal name="abc" price="100">waewqwqsda</journal>中的waewqwqsda buf.append(chars,start,length); } public static void main(String args[]) { try{ SAXParserFactory sf = SAXParserFactory.newInstance(); SAXParser sp = sf.newSAXParser(); TestSAX testsax=new TestSAX(); sp.parse(new InputSource("D:testsimpleTestclassessimpleTesttest.xml"),testsax); }catch(IOException e) { e.printStackTrace(); }catch(SAXException e) { e.printStackTrace(); }catch(Exception e) { e.printStackTrace(); } } } xml文件: <?xml version="1.0" encoding="utf-8" ?> <magazine> <journal namea="abc" price="100">waewqwqsda</journal> <ddd>wwwww</ddd> </magazine>