rss-icon mail-icon

Portfolio Christian Waldmann

Vom:

Blog

Mein "Kompendium" und sonstige Projekte

JDOM Einführung

„JDOM“ ist eine speziell für Java entwickelte Klasse für die einfache Verarbeitung von XML in Java. „JDOM“ integriert die Vorteile und APIs von SAX und DOM in einer “Java–Klasse“.

Ich habe hier eine kleine Übersicht zusammengestellt, die zeigen soll wie einfach und schnell man mit „JDOM“ XML verarbeiten, erstellen, und editieren kann.

Alle Knoten werden in dieser Klasse durch den Datentyp „Element“ repräsentiert.
Jedem Element kann eine beliebige Anzahl an Knoten hinzugefügt werden.

Ein neues Dokument erstellen

Wenn ein neues XML Dokument mit „JDOM“ erstellt werden soll, wird zuerst ein neues Objekt von der Klasse „Element“ instanziert und ihm der Name des Root-Elements übergeben. Danach wird dem Dokument dieser Knoten übergeben.

//Create Dokument
Document doc;
Element root = new Element("root");
doc.setContent(root);

Dem „Root“-Knoten Unterelemente hinzufügen

Um ein Element einem anderen Element hinzuzufügen/unterzuordnen, wird die Funktion add (Element Element) verwendet.

//Den Root-Knoten unter Elemente hinzufügen
Element child1 = new Element ("child");
root.add (child1);

Einem Element Text zuweisen

Um einem Element einen neuen Text zuzuweisen, wird die Funktion setText (String String) verwendet.

//Einem Element Text zuweisen ergibt
<child>Irgend ein Text</child>
child1.setText("Irgend ein Text");

Einem Element ein Attribut zuweisen

/*Einem Element ein Attribut zuweisen
ergibt <child id=“50“/>*/
child1.setAttribute("id", „50“));

Suche nach einem bestimmten Knoten mit dem Attribut id=50

Bei der Suche nach einem bestimmten Element kann, wie unten im Beispiel beschrieben, vorgegangen werden. Zuerst lässt man sich das Root Element des Dokuments übergeben. Danach können alle Kinder des Root-Elements mit einem bestimmten Namen, hier „child“, in einer Liste zwischengespeichert werden. Um nun spezifische Elemente zu finden, wird mit einer Schleife über die Liste iteriert, bis das passende Element gefunden ist.

//Suche nach einem bestimmten Knoten
Element root = doc.getRootElement();
List <Object>ListChild = root.getChildren("child");
Iterator  <Object> IteratorChild = ListChild .iterator();
Element ElementSearchFor = null;

while (IteratorChild.hasNext()) {
	Element child = (Element) IteratorChild.next();
String childID = year.getAttributeValue("id");
	if (childID != null) {
		if (childID .equals(„50“)) {
		ElementSearchFor = child ;
		break;
		}
	}
}

Löschen eines Knotens

Beim Löschen eines Elements muss erst nach diesem gesucht werden (vgl. „Suche nach einem bestimmten Knoten“). Danach kann dieser von seinem Eltern-Knoten entfernt werden.

//Löschen eines Knotens
root.removeContent(ElementSearchFor);

Dokument als File speichern

Um das Dokument als File zu Speichern wird die FileWriter-Klasse im Zusammenspiel mit dem XMLOutputter genutzt.

//Dokument als File speichern
doc.setContent(root);
FileWriter writer = new FileWriter(file);
XMLOutputter outputter = new XMLOutputter();
outputter.setFormat(Format.getPrettyFormat());
outputter.output(doc, writer);

Ein bestehendes File laden

Ein bestehendes XML-File wird mit Hilfe des SAXBuilders geladen und dann einem Objekt der Klasse Document übergeben.

//Ein bestehendes File laden
File file = new File(calendar_file_name);
Document doc = new Document ();

if (file.exists()) {
SAXBuilder builder = new SAXBuilder();
try {
	doc = builder.build(file);
} catch (JDOMException e) {
	e.printStackTrace();								

} catch (IOException e) {
	e.printStackTrace();
}

Weiterführende Links:

http://www.jdom.org/

Kategorie: Java