C’è un modo più elegante per convertire un documento XML in una stringa in Java rispetto a questo codice?

Ecco il codice attualmente utilizzato.

public String getStringFromDoc(org.w3c.dom.Document doc) { try { DOMSource domSource = new DOMSource(doc); StringWriter writer = new StringWriter(); StreamResult result = new StreamResult(writer); TransformsrFactory tf = TransformsrFactory.newInstance(); Transformsr transformsr = tf.newTransformsr(); transformsr.transform(domSource, result); writer.flush(); return writer.toString(); } catch(TransformsrException ex) { ex.printStackTrace(); return null; } } 

Si basa su DOM Level3 Carica / Salva :

 public String getStringFromDoc(org.w3c.dom.Document doc) { DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation(); LSSerializer lsSerializer = domImplementation.createLSSerializer(); return lsSerializer.writeToString(doc); } 

Questo è un po ‘più conciso:

 try { Transformsr transformsr = TransformsrFactory.newInstance().newTransformsr(); StreamResult result = new StreamResult(new StringWriter()); DOMSource source = new DOMSource(doc); transformsr.transform(source, result); return result.getWriter().toString(); } catch(TransformsrException ex) { ex.printStackTrace(); return null; } 

Altrimenti potresti usare una libreria come XMLSerializer da 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()); 

L’API del trasformatore è l’unico modo standard XML per trasformare da un object DOM in un modulo serializzato (String in questo caso). Come standard intendo SUN Java XML API per l’elaborazione XML .

Altre alternative come Xerces XMLSerializer o JDOM XMLOutputter sono metodi più diretti (meno codice) ma sono specifici del framework.

Secondo me il modo in cui hai usato è il più elegante e il più portatile di tutti. Utilizzando un’API Java XML standard è ansible colbind XML-Parser o XML-Transformsr di propria scelta senza modificare il codice (lo stesso dei driver JDBC). C’è qualcosa di più elegante di quello?

Potresti usare XOM per fare questo:

 org.w3c.dom.Document domDocument = ...; nu.xom.Document xomDocument = nu.xom.converters.DOMConverter.convert(domDocument); String xml = xomDocument.toXML();