with read parseo parsear leer how java xml dom xml-serialization

parseo - read xml in java sax



DOMImplementationLS se serializa a String en UTF-8 en Java (2)

Encuentro que la forma más flexible de serializar un DOM a String es usar la API javax.xml.transform :

Node node = ... StringWriter output = new StringWriter(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(new DOMSource(node), new StreamResult(output)); String xml = output.toString();

No es especialmente elegante, pero debería darle un mejor control sobre la codificación de salida.

leyendo la documentación de java org.w3c.dom.ls, parece que un elemento solo se puede serializar a una cadena con la codificación de cadena nativa java, UTF-16. Sin embargo, necesito crear una cadena UTF-8, escapada o no, entiendo que todavía será una cadena UTF-16. Alguien tiene una idea para evitar esto? Necesito que la cadena pase a un cliente WS generado que consumirá la cadena, entonces debería ser UTF-8.

el código que uso para crear la cadena:

DOMImplementationRegistry domImplementationRegistry = DOMImplementationRegistry. DOMImplementationLS domImplementationLS = (DOMImplementationLS) REGISTRY.getDOMImplementation("LS"); LSSerializer writer = domImplementationLS.createLSSerializer(); String result = writer.writeToString(element);


Aún puede usar DOMImplementationLS :

DOMImplementationRegistry domImplementationRegistry = DOMImplementationRegistry. DOMImplementationLS domImplementationLS = (DOMImplementationLS)REGISTRY.getDOMImplementation("LS"); LSOutput lsOutput = domImplementationLS.createLSOutput(); lsOutput.setEncoding("UTF-8"); Writer stringWriter = new StringWriter(); lsOutput.setCharacterStream(stringWriter); lsSerializer.write(doc, lsOutput); String result = stringWriter.toString();