xmlstring in xml format ausgeben lassen

darksmilie

Erfahrenes Mitglied
hi,

ich habe ein xml string und würde den gerne ordentlich ausgeben lassen, bzw. gibt es eine Klasse die mit die zeilenumbrüche und tabs in diesen String parsen kann?

diesen String gebe ich anschliessend in einem editor aus.

momentan steht halt alles nocht in einer reihe.
 
Naja, es gibt für sowas XMLOutputter. Entweder suchst du dir einen (z.B. jdom müsste sowas dabei haben) oder du schreibst dir selbst einen. Wie sowas auszusehen hat, haben wir hier vor kurzem schonmal besprochen ... genauer gesagt hier: http://www.tutorials.de/forum/java/274726-xml-datei-auslesen-und-aendern.html

Edit: hmm, sorry. ich glaub das ist doch nicht das was ich meinte ... ich such nochmal kurz weiter :)

2 Edit: Noch was gefunden: http://www.galileocomputing.de/openbook/javainsel6/javainsel_13_006.htm - da wird's eigentlich auch schön erklärt. Nach dieser Sache mit " Format.getPrettyFormat() " war ich auf der Suche :)
 
Zuletzt bearbeitet:
Hallo,

in dem Link den Kulabac gepostet hat wirst du noch eine Lösung finden, bei der du keinen eigenen XMLOutputter schreiben musst, da bin ich auch einem besseren belehrt worden. :-)

Code:
TransformerFactory factory = TransformerFactory.newInstance();
Tranformer transformer = factory.newTransformer();
transformer.transform(new DOMSource(deinDocument), new StreamResult(new FileOutputStream(XMLFILENAME)));

MFG

zEriX
 
Hallo,

Java:
/**
 * 
 */
package de.tutorials;

import java.io.StringReader;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory;

/**
 * @author Tom
 * 
 */
public class XMLOutputExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        String xml = "<?xml version=\"1.0\"?><a><b><c>xxx</c></b></a>";

        Transformer transformer = TransformerFactory.newInstance()
                .newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputPropertiesFactory.S_KEY_INDENT_AMOUNT,"1");
        transformer.transform(new StreamSource(new StringReader(xml)),
                new StreamResult(System.out));
    }

}

Ausgabe:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<a>
 <b>
  <c>xxx</c>
 </b>
</a>

Gruß Tom
 
Zuletzt bearbeitet von einem Moderator:
Hi,

danke für die vielen antworten.

Tom deins klappt aber wie packe ich das dann denn das formatierte wieder in den String zurück, so das ich den String an mein Editor geben kann?
 
Hallo,

schau mal hier
Java:
/**
 *
 */
package de.tutorials.xml;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory;

/**
 *
 */
public class XMLOutputExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		String xml = "<?xml version=\"1.0\"?><a><b><c>xxx</c></b></a>";
		StringWriter writer = new StringWriter();

		Transformer transformer = TransformerFactory.newInstance()
				.newTransformer();
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
		transformer.setOutputProperty(
				OutputPropertiesFactory.S_KEY_INDENT_AMOUNT, "1");
		transformer.transform(new StreamSource(new StringReader(xml)),
				new StreamResult(writer));

		StringBuffer buffer = writer.getBuffer();
		System.out.println(buffer.toString());
	}

}

MFG

zEriX
 
Zuletzt bearbeitet:
eine frage hätte ich da doch noch.

die zeilenumbrüche macht er, aber leider nicht die tab, muss ich noch eine outputproperty hinzufügen?

also mein output sieht so aus:

das ist mein testinput: "<?xml version=\"1.0\"?><a><b><c name=\"test\"/></b></a>";

<?xml version="1.0" encoding="UTF-8"?>
<a>
<b>
<c name="test"/>
</b>
</a>
 
Zurück