Mercurial > hg > Members > nobuyasu > TestNeo4j
view src/howtouse/TestSaxParser.java @ 8:d8d0855bcdfd draft
add CharReader.java , WikiLinkParser.java
author | one |
---|---|
date | Wed, 22 Aug 2012 01:44:26 +0900 |
parents | |
children | e98ca9548c78 |
line wrap: on
line source
package howtouse; import java.io.FileInputStream; import java.util.Stack; 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; public class TestSaxParser extends DefaultHandler { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("./resource/article.xml"); TestSaxParser sample = new TestSaxParser(); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse(fis, sample); } catch (Exception e) { e.printStackTrace(); } } protected Stack<MyObject> stack; private MyObject currentObj; private Attributes currentAttr; private String currentTag; final static String TAGNAME_TITLE = "title"; final static String TAGNAME_TEXT = "text"; public TestSaxParser() { stack = new Stack<MyObject>(); } public void startDocument() { System.out.println("read start"); } public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { currentTag = qName; if (qName.equals(TAGNAME_TITLE)) { currentObj = new MyObject(attributes); stack.push(currentObj); } else if (qName.equals(TAGNAME_TEXT)) { currentObj = new MyObject(attributes); stack.push(currentObj); } else { } } public void characters(char[] ch, int offset, int length) { String value = new String(ch, offset, length); if (currentObj != null) { currentObj.setValue(currentTag, currentAttr, value); if (currentTag.equals(TAGNAME_TITLE) || currentTag.equals(TAGNAME_TEXT)) { System.out.println("\ntag:"+currentTag); System.out.println("value:\n"+value); } } } public void endElement(String uri, String localName, String qName) { if (currentObj == null) return; if (qName.equals(TAGNAME_TITLE)) { stack.pop(); } else if (qName.equals(TAGNAME_TEXT)) { stack.pop(); } else { } if (stack.empty()) currentObj = null; else currentObj = (MyObject) stack.peek(); } public void endDocument() { System.out.println("end reading file."); } }