# XML file erstellen und in lesbarer form speichern



## BlubBlub (12. Sep 2011)

Hi ich wollte eine XML Datei erstellen und abspeichern.
Funktioniert auch wunderbar. Allerdings sind die Tags in der gespeicherten Datei aneinander gereiht.
Wie schaffe ich es, dass die Tags schön untereinandert stehen, so dass es für den Benutzer, der
die XML File aufmacht mit einem Editor, übersichtlich ist?


```
Document document = null;
		try
		{
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
		}
		catch (ParserConfigurationException e1)
		{
			e1.printStackTrace();
		}

		Element rootElement = document.createElement("graphicAnimator");
		Element mainPanelElement = document.createElement("mainPanel");
		Element eventsElement = document.createElement("events");
		Element backgroundElement = document.createElement("background");
		backgroundElement.setAttribute("value", "Color.CYAN");
		Element imageElement = document.createElement("image");;
		Element statesElement = document.createElement("states");
		Element userEventsElement = document.createElement("userEvents");
		Element systemFeedbackEventsElement = document.createElement("systemFeedbackEvents");
		Element timerEventsElement = document.createElement("timerEvents");
		Element systemStatesElement = document.createElement("systemStates");
		Element soundStatesElement = document.createElement("soundStates");
		
		document.appendChild(rootElement);
			rootElement.appendChild(mainPanelElement);
				mainPanelElement.appendChild(backgroundElement);
				mainPanelElement.appendChild(imageElement);
			rootElement.appendChild(eventsElement);
				eventsElement.appendChild(userEventsElement);
				eventsElement.appendChild(systemFeedbackEventsElement);
				eventsElement.appendChild(timerEventsElement);
			rootElement.appendChild(statesElement);
				statesElement.appendChild(systemStatesElement);
				statesElement.appendChild(soundStatesElement);
		
		
		try
		{
			TransformerFactory.newInstance().newTransformer().transform(new DOMSource(document), new StreamResult("C:/.../testfile.xml"));
		}
		catch (TransformerConfigurationException e1)
		{
			e1.printStackTrace();
		}
		catch (TransformerException e1)
		{
			e1.printStackTrace();
		}
		catch (TransformerFactoryConfigurationError e1)
		{
			e1.printStackTrace();
		}
```

Die erzeugt Datei sieht so aus, wenn man sie öffnet:

```
<?xml version="1.0" encoding="UTF-8" standalone="no"?><graphicAnimator><mainPanel><background value="Color.CYAN"/><image value="C:/..."/></mainPanel><events><userEvents/><systemFeedbackEvents/><timerEvents/></events><states><systemStates/><soundStates/></states></graphicAnimator>
```

Schön wäre es aber wenn sie so aussehen würde:

```
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphicAnimator>
                <mainPanel>
                         <background value="Color.CYAN"/>
                         <image value="..."/>
                </mainPanel>

                <events>
                         <userEvents/>
                         <systemFeedbackEvents/>
                         <timerEvents/>
                </events>

                <states>
                       <systemStates/>
                       <soundStates/>
                </states>
</graphicAnimator>
```


----------



## SlaterB (12. Sep 2011)

https://forums.oracle.com/forums/thread.jspa?messageID=1191387

also
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");


----------



## BlubBlub (12. Sep 2011)

Jau cool danke funktioniert ausgezeichnet =)


----------

