package nota.oxygen.epub.notes; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; public class FindNoteRefHandler extends DefaultHandler { private String fileName; private String id= null; private String className= null; private String epubType= null; private String href= null; private Map<String, List<String>> idMap; private Map<String, List<String>> fnMap; public void setFileName(String fileName) { this.fileName = fileName; } public Map<String, List<String>> getIDMap() { return idMap; } public Map<String, List<String>> getFNMap() { return fnMap; } public FindNoteRefHandler() { idMap = new LinkedHashMap<String, List<String>>(); fnMap = new LinkedHashMap<String, List<String>>(); } public void startDocument() { } public void endDocument() { } public void startElement(String uri, String localName, String qualifiedName, Attributes attributes) { if (qualifiedName.equals("a")) { if (attributes != null) { if (attributes != null) { for (int i = 0; i < attributes.getLength(); i++) { if (attributes.getQName(i).equals("id")) id = attributes.getValue(i); if (attributes.getQName(i).equals("class")) className = attributes.getValue(i); if (attributes.getQName(i).equals("epub:type")) epubType = attributes.getValue(i); if (attributes.getQName(i).equals("href")) href = attributes.getValue(i); } if (className != null && className.equals("noteref") && epubType != null && epubType.equals("noteref")) { href = href.substring(href.indexOf("#")); href = href.replace("#", ""); List<String> idList = idMap.get(href); if (idList == null) { idList = new ArrayList<String>(); idMap.put(href, idList); } idList.add(id); List<String> fnList = fnMap.get(href); if (fnList == null) { fnList = new ArrayList<String>(); fnMap.put(href, fnList); } fnList.add(fileName); } } } } } public void endElement(String uri, String localName, String qualifiedName) { } public void characters(char characters[], int start, int length) { } }