package fr.savoca.xmlparser;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class RSSHandler extends DefaultHandler {
final int state_unknown = 0;
final int state_name = 1;
final int state_version = 2;
final int state_file = 3;
int currentState = state_unknown;
RSSFeed feed;
RSSItem item;
boolean itemFound = false;
RSSHandler(){}
RSSFeed getFeed(){ return feed; }
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
feed = new RSSFeed();
item = new RSSItem();
}
@Override
public void endDocument() throws SAXException {}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (localName.equalsIgnoreCase("package")){
itemFound = true;
item = new RSSItem();
currentState = state_unknown;
}
else if (localName.equalsIgnoreCase("package_name")){ currentState = state_name; }
else if (localName.equalsIgnoreCase("package_version")){ currentState = state_version; }
else if (localName.equalsIgnoreCase("package_file")){ currentState = state_file; }
else { currentState = state_unknown; }
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
// TODO Auto-generated method stub
if (localName.equalsIgnoreCase("package")){ feed.addItem(item); }
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
// TODO Auto-generated method stub
String strCharacters = new String(ch,start,length);
if (itemFound == true){
// "item" tag found, it's item's parameter
switch(currentState){
case state_name:
item.setName(strCharacters);
break;
case state_version:
item.setVersion(strCharacters);
break;
case state_file:
item.setFile(strCharacters);
break;
default:
break;
}
}
/*
else {
// not "item" tag found, it's feed's parameter
switch(currentState){
case state_name:
feed.setName(strCharacters);
break;
case state_version:
feed.setVersion(strCharacters);
break;
case state_file:
feed.setFile(strCharacters);
break;
default:
break;
}
} */
currentState = state_unknown;
}
}
|