Wie kann mit Java 8 und dem DOM-Parser einfach eine XML Datei erzeugt werden?

Wie kann mit Java 8 mit dem DOM-Parser einfach eine XML Datei erzeugt werden?

Es sind keine weiteren Abhängigkeiten nötig. Allso keine imports von Fremdjars. Alles ist in Java 8 vorhanden:

import java.io.File;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

Wie kann mit Java 8 und dem DOM-Parser einfach eine XML Datei erzeugt werden?
Es muss ein DOM Object mit der Baumstruktur erzeugt werden. Dann kann mit dem Transformer und dem StreamResult in eine Datei geschrieben werden.

Hier nun die drei Schritte:

1. Mit der DocumentBuilderFactory ein neues Document erzeugen:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()

2. Benötigte Elemente und Attribute erzeugen und dem Dokument hinzufügen

Element root = doc.createElement("map");
root.setAttribute("version", "www.wenzlaff.info 1.0.0");
doc.appendChild(root);

3. den erzeugen Tree mit dem Transformer mit DOMSource mit StreamResult transformieren und in eine Datei speichern

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource domSource = new DOMSource(doc);

StreamResult streamResult = new StreamResult(new File(zielMindmapName + ".mm"));
transformer.transform(domSource, streamResult);

Es wird dann die folgende XML Datei erzeugt:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root version="www.wenzlaff.info 1.0.0">
  <kind NAME="Thomas Wenzlaff"/>
</root>

Hier nun das ganze Beispiel als JUnit Test:

/*
	 * DOM Parser Test Beispiel
	 * 
	 * @author Thomas Wenzlaff
	 * @throws Exception bei Fehler
	 */
	@Test
	public void checkDOMParsre() throws Exception {

		// 1. Mit der DocumentBuilderFactory ein neuse Document erzeugen:
		Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();

		// 2. Benötigte Elemente erzeugen und dem Dokument hinzufügen

		Element root = doc.createElement("root");
		root.setAttribute("version", "www.wenzlaff.info 1.0.0");
		doc.appendChild(root);

		// (optional) ein Kind dem root hinzufügen
		Element kind = doc.createElement("kind");
		kind.setAttribute("NAME", "Thomas Wenzlaff");
		root.appendChild(kind);

		// 3. den erzeugen Tree mit dem Transformer mit DOMSource mit StreamResult
		// transformieren und in eine Datei speichern
		Transformer transformer = TransformerFactory.newInstance().newTransformer();
		// (optional) Property für die Formatierung setzen
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
		transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

		DOMSource domSource = new DOMSource(doc);

		StreamResult streamResult = new StreamResult(new File("dom-parsre-test.xml"));
		transformer.transform(domSource, streamResult);

		// 4. (optional) für Debug zweckt das XML File auf der Konsole ausgeben
		StreamResult streamResultKonsole = new StreamResult(System.out);
		transformer.transform(domSource, streamResultKonsole);

		assertNotNull(streamResult);
	}

Wie kann mit Java 8 und dem DOM-Parser einfach eine XML Datei erzeugt werden?

Ähnliche Artikel:

  1. Linux Quickie: Wie kann eine sortierte CSV Datei mit Dateinamen, Rechten und Gruppe erzeugt werden?
  2. Wie kann mit der neuen Java Zeit API 1.8 ein Zeitstempel (2014-01-31_15:12:00) erzeugt werden?
  3. Fritzbox Telefonbuch (Phonebook) mit Java bearbeiten via JDom und SAXBuilder

wallpaper-1019588
Gemüsebeet in Mai: Diese 10 Gemüse kannst du jetzt pflanzen
wallpaper-1019588
Faszination Las Vegas – Tipps und Reiseempfehlungen
wallpaper-1019588
trapezium: Stream zeigt Anfang des Films
wallpaper-1019588
Dürfen Hunde Kidneybohnen essen?