XML parsen und wieder in String konvertieren

XML wird in Java meist über DOM oder SAX bearbeitet. Im Falle von DOM wird ein Baum aufgebaut, der die Struktur und die Inhalte des XML Dokuments wiedergibt. Wie kommt man aber von einem XML String zu einem DOM Baum und vom DOM Baum wieder zurück zu einem String? Dafür habe ich ein kleines Helferlein programmiert…

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
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.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
 
/**
 * Utilities for parsing and converting XML DOMs.
 */
public class XMLUtilities {
 
	/**
	 * Parse a string containing XML.
	 *
	 * @param xmlString the XML string
	 * @return XML DOM document
	 * @throws ParserConfigurationException
	 * @throws SAXException
	 * @throws IOException
	 */
	public static Document parse(String xmlString) throws ParserConfigurationException, SAXException, IOException {
		// define inputs
		StringReader stringReader = new StringReader(xmlString);
		InputSource inputSource = new InputSource(stringReader);
		// parse inputs
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = builder.parse(inputSource);
		return document;
	}
 
	/**
	 * Convert XML DOM document to a string.
	 *
	 * @param document XML DOM document
	 * @return XML string
	 * @throws TransformerException
	 */
	public static String toString(Document document) throws TransformerException {
        StringWriter stringWriter = new StringWriter();
        StreamResult streamResult = new StreamResult(stringWriter);
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.transform(new DOMSource(document.getDocumentElement()), streamResult);
        return stringWriter.toString();
	}
 
}

Tags: , ,

This entry was posted on Tuesday, September 2nd, 2008 at 16:02 and is filed under Blog. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

 

One Response to “XML parsen und wieder in String konvertieren”

  1. Emml Says:

    Hat mir weitergeholfen, danke :)

Leave a Reply