Voici le code actuellement utilisé.
Réponses
Trop de publicités?S'appuie sur DOM Level3 Load / Save :
public String getStringFromDoc(org.w3c.dom.Document doc) {
DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
LSSerializer lsSerializer = domImplementation.createLSSerializer();
return lsSerializer.writeToString(doc);
}
Le transformateur de l'API est la seule XML standard de la manière de transformer à partir d'un objet DOM à une forme sérialisée (String dans ce cas). En standard, je veux dire SUN Java XML API for XML Processing.
D'autres solutions, telles que Xerces XMLSerializer ou JDOM XMLOutputter sont des méthodes plus directes (moins de code), mais ils sont un cadre spécifique.
À mon avis, la façon dont vous avez utilisé est le plus élégant et le plus portable de tous. En utilisant un standard XML Java API, vous pouvez brancher le XML-Parser XML ou-Transformateur de votre choix sans changer le code(le même que les pilotes JDBC). Est-il rien de plus élégant que cela?
C'est un peu plus concis:
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;
}
Sinon, vous pouvez utiliser une bibliothèque comme XMLSerializer d'Apache:
//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());