# Tabs/Einrückungen der XML-Elemente gehen beim Schreiben verloren



## Detond (4. Mrz 2009)

Hallo miteinander,

z.Z benutze ich zur Erzeugung von XML-Dateien java-xmlbuilder - Google Code (java-xmlbuilder). Im Prinzip gelingt es mir nicht, den angegeben Beispielcode auf der Entwicklerhomepage mit korrekter Einrückung zu erstellen.

[HIGHLIGHT="Java"]XMLBuilder builder = XMLBuilder.create("Projects")
    .e("java-xmlbuilder")
        .a("language", "Java")
        .a("scm","SVN")                    
        .e("Location")
            .a("type", "URL")
            .t("http://code.google.com/p/java-xmlbuilder/")
        .up()
    .up()
    .e("JetS3t")
        .a("language", "Java")
        .a("scm","CVS")
        .e("Location")
            .a("type", "URL")
            .t("http://jets3t.s3.amazonaws.com/index.html");

Properties outputProperties = new Properties();
outputProperties.put(javax.xml.transform.OutputKeys.METHOD, "xml");
outputProperties.put(javax.xml.transform.OutputKeys.INDENT, "yes");

PrintWriter writer = new PrintWriter(new FileOutputStream("projects.xml"));
builder.toWriter(writer, outputProperties);[/HIGHLIGHT]

Der Output, also die XML-Datei ist korrekt, jedoch fehlen sämtliche Einrückungen. Unterstützt diese Option das Paket "java-xmlbuilder nicht (das ich benutze), oder mach ich bei der Ausgabe etwas falsch?

Viele Grüße...


----------



## maki (4. Mrz 2009)

> Der Output, also die XML-Datei ist korrekt, *jedoch fehlen sämtliche Einrückungen*.


Was denn für Einrückungen?


----------



## Detond (4. Mrz 2009)

Naja, jedes Element beginnt halt am Anfang einer Zeile.
Kleines Beispiel: 

So soll es aussehen:

[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8"?>
<Projects>
    <java-xmlbuilder language="Java" scm="SVN">
        <Location type="URL">http://code.google.com/p/java-xmlbuilder/</Location>
    </java-xmlbuilder>
    <JetS3t language="Java" scm="CVS">
        <Location type="URL">http://jets3t.s3.amazonaws.com/index.html</Location>
    </JetS3t>
</Projects>[/HIGHLIGHT]

vs

So sieht es aus:

[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8"?>
<Projects>
<java-xmlbuilder language="Java" scm="SVN">
<Location type="URL">http://code.google.com/p/java-xmlbuilder/</Location>
</java-xmlbuilder>
<JetS3t language="Java" scm="CVS">
<Location type="URL">http://jets3t.s3.amazonaws.com/index.html</Location>
</JetS3t>
</Projects>[/HIGHLIGHT]


----------



## Ebenius (4. Mrz 2009)

Hilft Dir Dieser Post weiter?

Ebenius


----------



## Detond (4. Mrz 2009)

ich weiß zwar nicht was da genau passiert, aber es funktioniert dank 
[HIGHLIGHT="Java"]outputProperties.put("{http://xml.apache.org/xslt}indent-amount", "2")[/HIGHLIGHT]

danke
erklärungen stehe ich offen gegenüber


----------



## Ebenius (4. Mrz 2009)

Offensichtlich verwendet der XMLBuilder bei Dir einen Apache-XSLT-Transformer, der ohne dieses Property davon ausgeht, dass Einrückungen mit 0 Zeichen ne Klasse Idee sind. Xerces geht im Standardfall von 2 Zeichen aus, glaube ich. Ich kenne das Problem und habe auch suchen müssen.  Die Zeile oben setzt ein Outputproperty, welches implementierungsabhängig ist und nur vom Apache-XSLT-Transformer beachtet wird.

Ebenius


----------

