XML Datei erstellen und Daten daraus in Java auslesen

kakulala

Mitglied
Hallo Leute,
ich bin noch nicht so bewandert in Java & bräuchte mal eure Hilfe. Ich soll eine XML datei erstellen in der ein Pfadname (Verzeichnis) drinsteht, das dann in Java ausgelesen wird & auf diese Datei mit Java zugegriffen werden kann. (in der XML sollen noch mehr sachen stehen, aber ich denke wenn ich das Grundprinzip mal drauf hab, schaff ich das schon 🙂 ) Hintergrund: falls sich das Verzeichnis ändert, muss man nur das XML-Dokument ändern & nicht in den Code selber gehen. Jetzt bin ich wie gesagt nicht sehr bewandert darin & bräuchte hilfe.
Könnt ihr mir ein paar Schlagwörter nennen, Seiten, Beispiele o.ä. damit ich mich da mal reinlesen kann bzw mir was dazu anschauen kann. Worauf muss ich achten? Wie muss ich es angehen?
 
Auf folgender Webseite steht links "Programme, ca. 12,8 MB":
http://openbook.rheinwerk-verlag.de/javainsel/
Lade dir die Zip-Datei herunter. Da sind gute Beispiele.

Ich habe es wie letztendlich folgt gemacht (ich habe Objekt "model" meiner Klasse "Model" gespeichert):
Java:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
JAXB.marshal(model, osw);
String commentary = "<!-- Created by sdfdf -->";
osw.write(commentary);
osw.close();

Dabei darf man aber nicht vergessen, den Standard-Konstruktor explizit hinzuschreiben:
Java:
public Model() {

}

Und über den Get-Methoden in meiner Model-Klasse muss ein XmlElement-Tag sein:
Java:
@XmlElement(name = "htdfhbxe")

Um eine XML-Datei zu laden:
Java:
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser parser = saxParserFactory.newSAXParser();
DefaultHandler myHandler = new MySAXHandler(mainWindow, xmlFile);
parser.parse(xmlFile, myHandler);

Wobei MySAXHandler eine eigene Klasse von mir ist, die von Default Handler erbt.
Dort muss es u.a. solch eine Methode geben:
Java:
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
   ...
}

In "startElement" kannst du über qName abfragen und über atts.getLength() iterieren:
Java:
if (qName.equals("zteutf")) {
    for (int i = 0; i < atts.getLength(); i++) {
        if (atts.getQName(i).equals("irtdf")) {
            ...
        }
    }
}
 

Zurück
Oben