parsear objeto leer java xml

objeto - ¿Hay una forma más elegante de convertir un documento XML en una cadena en Java que este código?



parsear xml a objeto java (4)

Aquí está el código usado actualmente.

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; } }


El transformador API es la única forma estándar de XML para transformar de un objeto DOM a un formulario serializado (String en este caso). Como estándar me refiero a SUN Java XML API para procesamiento XML .

Otras alternativas como Xerces XMLSerializer o JDOM XMLOutputter son métodos más directos (menos código) pero son específicos del framework.

En mi opinión, la forma en que la usaste es la más elegante y la más portátil de todas. Al usar una API XML Java estándar, puede conectar el XML-Parser o XML-Transformer de su elección sin cambiar el código (lo mismo que los controladores JDBC). ¿Hay algo más elegante que eso?


Esto es un poco más conciso:

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; }

De lo contrario, podría utilizar una biblioteca como XMLSerializer de 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());


Puede usar XOM para quizás hacer esto:

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


Se basa en 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); }