package nliveroid.nlr.main.parser; import java.util.ArrayList; import nliveroid.nlr.main.ErrorCode; import nliveroid.nlr.main.NLiveRoid; import nliveroid.nlr.main.SearchTab.TagParseTask; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import android.util.Log; public class SearchTagParser implements ContentHandler { private ArrayList<String> result = new ArrayList<String>(); private StringBuilder innerText = new StringBuilder(1024); private String startTag = "";//いれないと一番最初にNULLになる private boolean parseTarget = true; private boolean isFinished; private TagParseTask task; private ErrorCode error;//最初のパースとサムネイル取得に必要 public SearchTagParser(TagParseTask task,ErrorCode error){ this.task = task; this.error = error; } 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, Attributes attr) throws SAXException { startTag = arg1; if(arg1.equals("input") && attr != null && attr.getValue("class") != null && attr.getValue("class").equals("ac_close")){ parseTarget = true; }else if(parseTarget && arg1.equals("form")){ parseTarget = false; isFinished = true; task.finishCallBack(result); } } @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("label")){ // Log.d("NLiveRoid"," INn" + innerText.toString()); result.add(innerText.toString()); } } @Override public void endDocument() throws SAXException { if(NLiveRoid.isDebugMode)Log.d("NLiveRoid","PEND Document" + startTag); if(!isFinished){ error.setErrorCode(-27);//検索に失敗しました task.finishCallBack(null); } } @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 } }