package nliveroid.nlr.main.parser; import java.util.HashMap; import nliveroid.nlr.main.TagArrangeDialog.GetTagInfo; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import android.util.Log; public class TagInfoParser implements ContentHandler { private StringBuilder innerText = new StringBuilder(1024); private boolean parseTarget = false; private HashMap<String,Boolean> map = new HashMap<String,Boolean>(); private GetTagInfo task; private boolean finished; private int tableCount = 0; private boolean isLock; private boolean isTargetSpan; public TagInfoParser(GetTagInfo task){ this.task = task; } private String getInnerText(char[] arg0,int arg2){ innerText = innerText.delete(0,arg0.length); innerText.append(arg0, 0, arg2); return innerText.toString(); } @Override public void startElement(String arg0, String arg1, String arg2, org.xml.sax.Attributes arg3) throws SAXException { // Log.d("log","S --- " + arg1); if(arg1 != null && arg1.equals("table")){ tableCount++; } if(tableCount == 2){ parseTarget= true; } if(parseTarget&&arg1.equals("span")){ for(int i = 0; i < arg3.getLength(); i++){ if(arg3.getValue(i).contains("locked_tags")||arg3.getValue(i).contains("free_tags")){ Log.d("log","INNER --- " + innerText); isTargetSpan = true; if(arg3.getValue(i).contains("locked")){ isLock=true; }else{ isLock=false; } } } } } @Override public void characters(char[] arg0, int arg1, int arg2) throws SAXException { if(parseTarget){ getInnerText(arg0,arg2); } } @Override public void endElement(String arg0, String arg1, String arg2) throws SAXException { if(arg1.equals("span")&&isTargetSpan){ isTargetSpan = false; map.put(innerText.toString(), isLock); } if(arg1.equals("table")&&parseTarget&&!finished){//finishedないと2回きちゃう parseTarget = false; finished = true; task.finishCallBack(map); } if(arg1.equals("html")&&!finished){ task.finishErrorCallBack(); } } @Override public void endDocument() throws SAXException { // TODO } @Override public void endPrefixMapping(String arg0) throws SAXException { // TODO } @Override public void ignorableWhitespace(char[] arg0, int arg1, int arg2) throws SAXException { // TODO } @Override public void processingInstruction(String arg0, String arg1) throws SAXException { // TODO } @Override public void setDocumentLocator(Locator arg0) { // TODO } @Override public void skippedEntity(String arg0) throws SAXException { // TODO } @Override public void startDocument() throws SAXException { // TODO } @Override public void startPrefixMapping(String arg0, String arg1) throws SAXException { // TODO } }