Mercurial > hg > Members > nobuyasu > TestNeo4j
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/howtouse/TextTagParser.java Thu Aug 23 09:03:33 2012 +0900 @@ -0,0 +1,93 @@ +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."); + } + +}