Mercurial > hg > Members > nobuyasu > TestNeo4j
view src/howtouse/TextTagParser.java @ 16:5c8c554ee3ac draft
hg mv TestSaxParser.java TextTagParser.java
author | one |
---|---|
date | Thu, 23 Aug 2012 09:03:33 +0900 |
parents | src/howtouse/TestSaxParser.java@fa38ded4c054 |
children |
line wrap: on
line source
package howtouse; import java.util.HashMap; import java.util.HashSet; import java.util.Stack; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class TextTagParser extends DefaultHandler { protected Stack<MyObject> stack; private MyObject currentObj; private Attributes currentAttr; private String currentTag; private String currentTitleName; final static String TAGNAME_TITLE = "title"; final static String TAGNAME_TEXT = "text"; WikiLinkParser linkParser = new WikiLinkParser(); HashMap<String,HashSet<String>> hash = new HashMap<String,HashSet<String>>(); HashSet<String> currentLinkHash = new HashSet<String>(); public TextTagParser() { stack = new Stack<MyObject>(); } public HashMap<String,HashSet<String>> getHash() { return hash; } 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)) { currentTitleName = value; } if(currentTag.equals(TAGNAME_TEXT)) { HashSet<String> tmpHash = linkParser.parse(value); if (tmpHash.size() <= 0) return; for (String link: tmpHash) { currentLinkHash.add(link); } } } } 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)) { hash.put(currentTitleName, currentLinkHash); currentLinkHash = new HashSet<String>(); stack.pop(); } else { } if (stack.empty()) currentObj = null; else currentObj = (MyObject) stack.peek(); } public void endDocument() { // System.out.println("end reading file."); } }