RSSHandler.java :  » UnTagged » simonsavoca » fr » savoca » xmlparser » Android Open Source

Android Open Source » UnTagged » simonsavoca 
simonsavoca » fr » savoca » xmlparser » RSSHandler.java
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;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.