1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
public class RSSHandler extends DefaultHandler{
//résultats de notre parsing
private List<Item> items;
private Item item;
//flags nous indiquant la position du parseur
private boolean inListe, inItem, inTitre, inTexte;
//buffer nous permettant de récupérer les données
private StringBuffer buffer;
// simple constructeur
public RSSHandler(){
super();
}
//détection d'ouverture de balise
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException{
if(qName.equals("BALISE_GLOBALE_RSS")){
items= new LinkedList<Item>();
inListe = true;
} else if(qName.equals("item")){
item= new Item();
inItem = true;
}else {
buffer = new StringBuffer();
if(qName.equals("titre")){
inTitre = true;
}else if(qName.equals("texte")){
inTexte = true;
}else{
//erreur, on peut lever une exception
throw new SAXException("Balise "+qName+" inconnue.");
}
}
}
//détection fin de balise
public void endElement(String uri, String localName, String qName)
throws SAXException{
if(qName.equals("BALISE_GLOBALE_RSS")){
inListe = false;
}else if(qName.equals("item")){
items.add(item);
item = null;
inItem = false;
}else if(qName.equals("titre")){
item.setTitre(buffer.toString());
buffer = null;
inTitre= false;
}else if(qName.equals("texte")){
item.setTexte(buffer.toString());
buffer = null;
inTexte = false;
}else{
//erreur, on peut lever une exception
throw new SAXException("Balise "+qName+" inconnue.");
}
}
//détection de caractères
public void characters(char[] ch,int start, int length)
throws SAXException{
String lecture = new String(ch,start,length);
if(buffer != null) buffer.append(lecture);
}
//début du parsing
public void startDocument() throws SAXException {
System.out.println("Début du parsing");
}
//fin du parsing
public void endDocument() throws SAXException {
System.out.println("Fin du parsing");
System.out.println("Resultats du parsing");
for(Item p : Items){
System.out.println(p);
}
}
} |
Partager