package study.java.jdks.version1_6.stax.extend; import java.io.IOException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stream.StreamResult; import org.xml.sax.ContentHandler; import org.xml.sax.DTDHandler; import org.xml.sax.EntityResolver; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; public class SaxWriteTest { static class SAXReaderImpl implements XMLReader{ @Override public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { return false; } @Override public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { } @Override public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { return null; } @Override public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { } @Override public void setEntityResolver(EntityResolver resolver) { } @Override public EntityResolver getEntityResolver() { return null; } @Override public void setDTDHandler(DTDHandler handler) { } @Override public DTDHandler getDTDHandler() { return null; } @Override public void setContentHandler(ContentHandler handler) { this.handler = handler; } @Override public ContentHandler getContentHandler() { return null; } @Override public void setErrorHandler(ErrorHandler handler) { } @Override public ErrorHandler getErrorHandler() { return null; } @Override public void parse(InputSource input) throws IOException, SAXException { if(handler == null) throw new SAXException("content handler is null"); handler.startDocument(); handler.startElement("", "students", "students", null); handler.startElement("", "student", "student", null); handler.startElement("", "student_name", "student_name", null); handler.characters("Mary".toCharArray(), 0, "Mary".length()); handler.endElement("", "student_name", "student_name"); handler.startElement("", "student_id", "student_id", null); handler.characters("S09070934".toCharArray(), 0, "S09070934".length()); handler.endElement("", "student_id", "student_id"); handler.endElement("", "student", "student"); handler.startElement("", "student", "student", null); handler.startElement("", "student_name", "student_name", null); handler.characters("Lord".toCharArray(), 0, "Mary".length()); handler.endElement("", "student_name", "student_name"); handler.startElement("", "student_id", "student_id", null); handler.characters("S09070808".toCharArray(), 0, "S09070808".length()); handler.endElement("", "student_id", "student_id"); handler.endElement("", "student", "student"); handler.endElement("", "students", "students"); handler.endDocument(); } @Override public void parse(String systemId) throws IOException, SAXException { } private ContentHandler handler; } public static void main(String[] args) throws TransformerException { TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf = tff.newTransformer(); tf.setOutputProperty(OutputKeys.INDENT, "yes");//设置转换的属性 tf.setOutputProperty(OutputKeys.METHOD, "xml"); tf.transform(new SAXSource(new SAXReaderImpl(),null), new StreamResult(System.out)); } }