package pt.gtg.musicinfo.lastfm.xml;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import android.util.Log;
import pt.gtg.musicinfo.data.DataEntry;
public abstract class LastfmXMLHandler
extends DefaultHandler
{
private static final String TAG = "Lastfm XML Handler";
protected String position = "";
public void startDocument()
throws SAXException
{
init();
}
public void endDocument()
throws SAXException
{
// nothing to do.
}
/** Gets be called on opening tags like:
* <tag>
* Can provide attribute(s), when xml was like:
* <tag attribute="attributeValue">*/
public void startElement(String namespaceURI, String localName,
String qName, Attributes attrs)
throws SAXException
{
position = position.concat("." + localName);
startElementExtra(namespaceURI, localName, qName, attrs);
Log.d(TAG, "starting element: "+position);
}
protected abstract void startElementExtra(String namespaceURI,
String localName, String qName, Attributes attrs)
throws SAXException;
/** Gets be called on closing tags like:
* </tag> */
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException
{
endElementExtra(namespaceURI, localName, qName);
position = position.substring(0, position.lastIndexOf("." + localName));
}
protected abstract void endElementExtra(String namespaceURI,
String localName, String qName);
protected abstract void init();
public abstract List<DataEntry> getParsedData();
public abstract void characters(char ch[], int start, int length);
}
|