package com.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import com.inter.XmlDocument; public class SaxDemo implements XmlDocument { public void createXml(String fileName) { System.out.println("<<" + fileName + ">>"); } public void parserXml(String fileName) { SAXParserFactory saxfac = SAXParserFactory.newInstance(); try { SAXParser saxparser = saxfac.newSAXParser(); InputStream is = new FileInputStream(fileName); saxparser.parse(is,new MySAXHandler()); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("-----sax解析完毕------"); } } class MySAXHandler extends DefaultHandler { boolean hasAttribute = false; Attributes attributes = null; public void startDocument() throws SAXException { System.out.println("开始打印"); } public void endDocument() throws SAXException { System.out.println("结束打印"); } public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException { if (qName.equals("employees")) { return; } if (qName.equals("employee")) { System.out.println(qName); } if (attributes.getLength() > 0) { this.attributes = attributes; this.hasAttribute = true; } } public void endElement(String uri,String qName) throws SAXException { if (hasAttribute && (attributes != null)) { for (int i = 0; i < attributes.getLength(); i++) { System.out.println(attributes.getQName(0) + attributes.getValue(0)); } } } public void characters(char[] ch,int start,int length) throws SAXException { System.out.println(new String(ch,start,length)); } }
2.编写测试类,TestSax.java,代码如下:
public class TestDom { public static void main(String[] args) { Saxdemo sax = new Saxdemo(); //创建的xml见图一 sax.createXml("D://employee.xml"); //解析的xml见图二 sax.parseXml("E://employee.xml"); } }