Hier ist der aktuell verwendete Code.
public String getStringFromDoc(org.w3c.dom.Document doc) {
try
{
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
writer.flush();
return writer.toString();
}
catch(TransformerException ex)
{
ex.printStackTrace();
return null;
}
}
Die Transformator-API ist die einzige XML-Standardmethode zum Transformieren von einem DOM-Objekt in ein serialisiertes Formular (in diesem Fall String). Standardmäßig meine ich die SUN Java XML API für die XML-Verarbeitung .
Andere Alternativen wie Xerces XMLSerializer oder JDOM XMLOutputter sind direktere Methoden (weniger Code), aber sie sind Framework-spezifisch.
Meiner Meinung nach ist die Art und Weise, wie Sie sie verwendet haben, die eleganteste und tragbarste von allen. Mithilfe einer Standard-XML-Java-API können Sie den XML-Parser oder XML-Transformer Ihrer Wahl anschließen, ohne den Code zu ändern (wie bei JDBC-Treibern). Gibt es etwas eleganteres als das?
quelle
Dies ist etwas prägnanter:
try { Transformer transformer = TransformerFactory.newInstance().newTransformer(); StreamResult result = new StreamResult(new StringWriter()); DOMSource source = new DOMSource(doc); transformer.transform(source, result); return result.getWriter().toString(); } catch(TransformerException ex) { ex.printStackTrace(); return null; }
Andernfalls könnten Sie eine Bibliothek wie XMLSerializer von Apache verwenden:
//Serialize DOM OutputFormat format = new OutputFormat (doc); // as a String StringWriter stringOut = new StringWriter (); XMLSerializer serial = new XMLSerializer (stringOut,format); serial.serialize(doc); // Display the XML System.out.println(stringOut.toString());
quelle
XMLSerializer
sogar Teil vonrt.jar
Sie könnten XOM verwenden , um dies möglicherweise zu tun:
org.w3c.dom.Document domDocument = ...; nu.xom.Document xomDocument = nu.xom.converters.DOMConverter.convert(domDocument); String xml = xomDocument.toXML();
quelle