# HG changeset patch # User one # Date 1345573121 -32400 # Node ID e98ca9548c786cfe017fc2a8ab385e5fee914156 # Parent d655c8fef734ba85a9f74965c8db9959ab31e12d fix TestSaxParser.java diff -r d655c8fef734 -r e98ca9548c78 src/howtouse/TestSaxParser.java --- a/src/howtouse/TestSaxParser.java Wed Aug 22 01:58:54 2012 +0900 +++ b/src/howtouse/TestSaxParser.java Wed Aug 22 03:18:41 2012 +0900 @@ -1,6 +1,9 @@ package howtouse; import java.io.FileInputStream; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; import java.util.Stack; import javax.xml.parsers.SAXParser; @@ -22,7 +25,19 @@ SAXParser parser = factory.newSAXParser(); parser.parse(fis, sample); - + HashMap> hash; + hash = sample.getHash(); + + + for (Map.Entry> entry : hash.entrySet()) { + String title = entry.getKey(); + System.out.println("title: "+title); + for (String link : entry.getValue()) { + System.out.println("\t"+link); + } + } + + } catch (Exception e) { e.printStackTrace(); } @@ -32,12 +47,21 @@ 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> hash = new HashMap>(); + HashSet currentLinkHash = new HashSet(); public TestSaxParser() { stack = new Stack(); } + + public HashMap> getHash() { + return hash; + } public void startDocument() { System.out.println("read start"); @@ -62,20 +86,29 @@ 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); + + if(currentTag.equals(TAGNAME_TITLE)) { + currentTitleName = value; + } + if(currentTag.equals(TAGNAME_TEXT)) { + HashSet 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(); stack.pop(); } else { @@ -84,8 +117,6 @@ currentObj = null; else currentObj = (MyObject) stack.peek(); - - } public void endDocument() {