Lo primero que quiero es dar las gracias puesto que me han ayudado
bastante en algunos temas!!! así que muchas gracias espero poder ayudar
cuando pregunten en el futuro....(cuando tenga mas conocimientos claro)
Ahora mi duda... lo que sucede es lo siguiente tengo un WebServices que
me al llamarlo me retorna un xml pero dentro de un String, y me gustaría
pasar este xml que esta dentro del String a un XML, como podría hacer
esto???
Gracias!!
> Ahora mi duda... lo que sucede es lo siguiente tengo un WebServices que
> me al llamarlo me retorna un xml pero dentro de un String, y me gustaría
> pasar este xml que esta dentro del String a un XML, como podría hacer
> esto???
>
No me queda muy clara tu pregunta: que es lo que llamas tu "un XML"?
Existen muchas formas de procesar un XML (asumo que a eso te refieres),
una posibilidad es aplicar una estrategia de (un)marshalling que significa
basicamente serializar y deserializar un Objeto en XML. Para que
entiendas.. digamos que tienes un XML asi:
<perro>
<patas>4</patas>
<cola>1</cola>
</perro>
Un proceso XML->Objeto crearia una instancia de una clase como esta:
public class Perro {
private int patas;
private int cola;
// Getters y Setters
}
Si es eso lo que quieres entonces puedes usar xstream
( http://xstream.codehaus.org/ ) o simple (
http://simple.sourceforge.net/home.php) ).
Otra herramienta que suelo sugerir para procesar XML es Digester.. si bien
la idea es similar a la anterior en realidad es un poco mas general porque
Digester permite ejecutar codigo arbitrario (no solo crear instancia de
algo) en funcion de lo que se lee de un XML. Puedes ver mas aca:
http://commons.apache.org/digester/
Por ultimo, cuando lo que quieres es recorrer, procesar y crear XML a mas
bajo nivel entonces puedes usar directamente cosas como jdom o SAX.
Salu2!
----
Ariel Aguayo B. (arag...@dcc.uchile.cl)
"Vale la pena morir por todo aquello sin lo cual no vale la pena vivir..."
Salvador Allende.
El problema es que mensaje SOAP tiene formato XML, por lo que terminarías con un documento XML dentro del otro y esto no es un XML bien formateado, el pareseador no te lo va a aceptar. Lo mismo cuando tratas de mandar un binario (imagen etc.).
Solución es codificar el XML base 64:
http://www.javaworld.com/javatips/jw-javatip117.html
Sin embargo, tener que mandar Xml por el SOAP “no huele bien”. En general, protocolo SOAP pretende definir métodos tipificados y con cierta semántica. Por ejemplo, en lugar de “enviarXml(xml)” tendrías “guardarPero(Pero pero)” y dejas que tu SOAP toolkit se encarga de protocolo…
El problema es que mensaje SOAP tiene formato XML, por lo que terminarías con un documento XML dentro del otro y esto no es un XML bien formateado, el pareseador no te lo va a aceptar. Lo mismo cuando tratas de mandar un binario (imagen etc.).
Digester tb usa XPath con una API de mas alto nivel:
http://www.javaworld.com/javaworld/jw-10-2002/jw-1025-opensourceprofile.html?page=2
>
> Para usar XPath debe tener primero una representación DOM del
> documento eso sí ...
>
----