samedi 25 avril 2015
SAX Parser implementieren
Posted on 11:14 by verona
Guten Abend,
ich muss einen SAX Parser implementieren, der alle XML Files mit folgendem Aufbau parsen kann:
Mein Parser sieht bisher so aus:
Zugrunde liegen eine Klasse Blumenladen:
und eine abstrakte Klasse Blumen:
Die Klassen Narzisse, Tulpe und Rose erben von BLume und spezifizieren die Typen.
Des Weiteren gibt es für die Farbe der Blumen:
Ich hoffe das reicht zum Verständnis.
Ziel ist es, die Blumen aus dem XML File auszulesen und in der LinkedList in zu speichern. Diese möchte ich dann später ausgeben können.
ich muss einen SAX Parser implementieren, der alle XML Files mit folgendem Aufbau parsen kann:
Java Code:
-
<?xml version="1.0" encoding="UTF-8"?><blumen>
-
<narzisse>
-
<bluetezeit>2</bluetezeit>
-
<farbe>weiss</farbe></narzisse>
-
<rose>
-
<preis>1</preis>
-
<bluetezeit>3</bluetezeit>
-
<farbe>rot</farbe></rose>
-
<tulpe>
-
<preis>1</preis>
-
<bluetezeit>1</bluetezeit>
-
<farbe>rot</farbe></tulpe></blumen>
Mein Parser sieht bisher so aus:
Java Code:
-
class BlumenHandler extends DefaultHandler {
-
private Blumenladen bl;
-
private Blume blume;
-
-
public Blumenladen getBlumenladen() {
-
return bl;
-
}
-
-
public void startDocument() {
-
bl = new Blumenladen();
-
}
-
-
-
if (qName.equals("narzisse"))
-
blume = new Narzisse();
-
-
if (qName.equals("rose"))
-
blume = new Rose();
-
-
if (qName.equals("tulpe"))
-
blume = new Tulpe();
-
-
-
}
-
-
public void characters(char[] chs, int start, int length) {
-
}
-
-
-
if (qName.equals("bluetezeit"))
-
-
if (qName.equals("farbe"))
-
blume.setFarbe(Farbe.valueOf(text));
-
-
if (qName.equals("preis"))
-
-
if (qName.equals("narzisse") || qName.equals("rose") || qName.equals("tulpe"))
-
bl.addBlume(blume);
-
-
}
-
}
Zugrunde liegen eine Klasse Blumenladen:
Java Code:
-
public class Blumenladen implements Iterable<Blume> {
-
-
-
//Liste, um alle vorhandenen Blumen im Laden zu speichern
-
private LinkedList<Blume> blumenbestand;
-
-
-
public Blumenladen(){
-
blumenbestand = new LinkedList<Blume>();
-
}
-
-
-
//Methode um eine Blume dem Blumenbestand hinzuzufuegen
-
public void addBlume(Blume b){
-
blumenbestand.add(b);
-
}
-
-
-
//Methode, um eine Blume aus dem Blumenbestand zu loeschen
-
public void removeBlume(Blume b){
-
blumenbestand.remove(b);
-
}
-
-
-
-
-
@Override
-
return blumenbestand.toString();
-
}
-
-
-
-
@Override
-
public Iterator<Blume> iterator() {
-
return blumenbestand.iterator();
-
}
-
}
und eine abstrakte Klasse Blumen:
Java Code:
-
public abstract class Blume {
-
-
-
public abstract void setPreis(double preis);
-
public abstract void setFarbe(Farbe farbe);
-
public abstract void setBluetezeit(int bluetezeit);
-
}
Die Klassen Narzisse, Tulpe und Rose erben von BLume und spezifizieren die Typen.
Des Weiteren gibt es für die Farbe der Blumen:
Java Code:
-
public enum Farbe {
-
ROT,ORANGE,WEISS,GELB,ROSA
-
}
Ich hoffe das reicht zum Verständnis.
Ziel ist es, die Blumen aus dem XML File auszulesen und in der LinkedList in zu speichern. Diese möchte ich dann später ausgeben können.
Java Code:
-
public class MeinSaxBlumenladen {
-
-
-
-
//Eingabe des Pfads als Kommandozeilenargument
-
-
SAXParserFactory factory = SAXParserFactory.newInstance();
-
SAXParser saxParser = factory.newSAXParser();
-
BlumenHandler handler = new BlumenHandler();
-
Blumenladen blumenladen = handler.getBlumenladen();
-
-
-
-
-
}
-
}
SAX Parser implementieren
Categories: SAX Parser implementieren
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire