java SAX

来源:互联网 发布:手机怎么设置4g网络 编辑:程序博客网 时间:2024/06/05 19:08
package read;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;import java.util.Stack;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.InputSource;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class MyXMLReader2SAX extends DefaultHandler {private boolean isStart;Stack<String> tags = new Stack<String>();public MyXMLReader2SAX() {super();isStart = false;}public static void main(String args[]) throws IOException, ParserConfigurationException, SAXException {File f = new File("out.txt");f.createNewFile();FileOutputStream fileOutputStream = new FileOutputStream(f);PrintStream printStream = new PrintStream(fileOutputStream);System.setOut(printStream);SAXParserFactory sf = SAXParserFactory.newInstance();SAXParser sp = sf.newSAXParser();MyXMLReader2SAX reader = new MyXMLReader2SAX();sp.parse(new InputSource("sourcedata.xml"), reader);}@Overridepublic void characters(char ch[], int start, int length) throws SAXException {if (isStart && !tags.isEmpty()) {String s=new String(ch, start, length).trim();s=s.replaceAll(" +|\n", " ");s=s.replaceAll("\t", "");System.out.print(s+" ");}}public void startElement(String uri, String localName, String qName, Attributes attrs) {switch (qName) {case "Name":isStart = true;tags.push(qName);break;case "Description":System.out.print("~");isStart = true;tags.push(qName);break;default:isStart = false;}}public void endElement(String uri, String localName, String qName) {isStart = false;switch (qName) {case "Description":System.out.println();tags.pop();break;case "Name":tags.pop();break;}qName = null;}}

0 0
原创粉丝点击