# XML Dokument Zeilenumbruch in den Quellcode einfügen



## jim.panse (2. Okt 2014)

Hallo,
ich muss eine XML Datei aus einem Java-Programm heraus generieren. Das erstellen des Dokumentes klappt auch wunderbar. Das Problem ist nur, dass in der XML Datei alles in eine Zeile geschrieben wird. 
Ich möchte jedoch nach jedem XML-Tag einen Zeilenumbruch einfügen. Hab jetzt schon ein paar Stunden gegoogelt (Stichwort: java result xml carriage return). Keiner der Treffer hat mich bislang weitergebracht. Jemand eine Idee...?



```
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class GenerateXML {

  public void generateXMLCode() {
    try {

      DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
      Document doc = docBuilder.newDocument();

      doc.setXmlStandalone(true);

      Element Document = doc.createElement("Document");
      doc.appendChild(Document);

      Attr AttrDocument = doc.createAttribute("TEST");
      AttrDocument.setValue("TEST");
      Document.setAttributeNode(AttrDocument);

      // .
      // .
      // .
      // usw.
      // .
      // .
      // .

      TransformerFactory transformerFactory = TransformerFactory.newInstance();
      Transformer transformer = transformerFactory.newTransformer();

      DOMSource source = new DOMSource(doc);
      StreamResult result = new StreamResult(new File("C:\\Test\\File.xml"));
      transformer.transform(source, result);

      System.out.println("Datei erfolgreich generiert!");
    } catch (ParserConfigurationException pce) {
      pce.printStackTrace();
    } catch (TransformerException tfe) {
      tfe.printStackTrace();
    }
  }
}
```


----------



## Thallius (2. Okt 2014)

Ich sehe keinen Vorteil darin das XML unnötig mit LF zu versehen. Dadurch wird nur das Einlesen langsamer. Wenn Du das XML bearbeiten willst, bietet eigentlich jeder XML Editor die Möglichkeit durch einen "Format" Befehlt das XML lesefreundlich darzustellen.

Gruß

Claus


----------



## dzim (3. Okt 2014)

Ansonsten würde ich spontan sagen, das die Google Suche eigentlich genug Daten, oder? "java xml formatted text"

Ich würde aber generell eher ein Framework wie JAXB, SimpleXML oder was auch immer, vorziehen (nicht, dass ich was gegen Pull-Parser hab - die haben schon ihre Daseinsberechtigung  )


----------



## Tobse (3. Okt 2014)

Ich denke auch, dass Google dir da auf jeden Fall weiter hilft. Line-Feeds in strings einbauen ist eigentlich ein absolutes basic.

ABER: Dass du unter dem suchbegriff "java result xml carriage return" nichts gefunden hast, ist klar. Du möchtest Zeilenumbrüche in einen Text einbauen. Dafür ist es egal, dass der Text XML ist, bleibt "java result carriage return". Dass dieser Text, den du da bearbeiten willst das ergebnis deines Programms ist, ist für dein Problem ebenso völlig egal. Bleibt also "java carriage return". Damit solltest du schonmal weiter kommen.
Zu guter letzt ist aber ein Carriage-Return (kurz CR) und ein Line-Feed (kurf LF) nicht das selbe. Und wie diese Beiden einen Zeilenumbruch darstellen variiert von OS zu OS. Siehe Steuerzeichen


----------



## arilou (6. Okt 2014)

Vielleicht hilft eher dieser Link; man kann dem 'transformer' mitgeben, das er "einrücken" soll.


----------



## arilou (6. Okt 2014)

Thallius hat gesagt.:


> Ich sehe keinen Vorteil darin das XML unnötig mit LF zu versehen.


Xml wurde extra dafür entworfen, um ein menschenfreundlich les- und editierbares Datenformat zu haben, auch wenn man nur einen simplen Texteditor verwendet.
Daher halte ich es für durchaus sinnvoll, Xml-Dokumente immer schön einzurücken und mit Zeilenumbrüchen zu versehen.


----------

