webservice vb y xml

10/10/2006 - 14:51 por Eduardo Silva | Informe spam
Hola a todos,

Estoy medio complicado para devolver en un web service un conjunto de
datos.

Hasta ahora estaba devolviendo un dataset y todo funcionaba perfecto
pero ahi vino mi cliente que lo quiere en un formato xml distinto al que me
crea el data set alguien tiene idea de como ir creando el xml a partir del
dataset?

Muchas Gracias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion [MVP]
10/10/2006 - 15:36 | Informe spam
"Eduardo Silva" wrote in message
news:
Mostrar la cita
Una solución más o menos rápida que se me ocurre es la de extraer el xml
del dataset a un XmlDataDocument, y a continuación usar un XslTransform para
aplicarle una transformada XSL que te lo deje en el formato que quieres.
Todo depende de cómo de complicado sea el formato que quiere tu cliente y
cuánto se parece al XML original que entrega el DataSet.
Otra alternativa sería pasar los datos del dataset a una Clase o
jerarquía de clases, y una vez cargadas usar un XmlSerializer para pasarlas
a XML. El formato de éste lo puedes controlar con atributos aplicados a los
campos de las clases.
Finalmente está el método de "fuerza bruta", consistente en recorrer con
unos bucles anidados el contenido del dataset e ir escribiendo los datos en
el formato XML que te interese (bien sea directamente en modo texto, o con
el auxilio de un XmlWriter).
#2 Eduardo Silva
10/10/2006 - 16:18 | Informe spam
Gracias Alberto por tu pronta respuesta,

me parece que en este caso la "fuerza bruta" seria facil pero el problema es
que de la fuerza bruta solo me quedo lo de bruto porque estoy bastante
debil.

te cuento que estube intentando las 3 formas que me comentas

con la primera me lie un poco porque no tengo acceso al disco para cargar un
archivo xml

con la segunda estoy desde la maniana temprano y no voy tan mal consegui
devolver el xml bastante parecido pero como hay muchos niveles de arrays la
jerarquia de clases se va complicando cada vez mas.

La ultima seria la mejor solucion que veo porque ya tengo todo armadito en
stores precedures y con unas pocas lineas de codigo podria ir generando el
codigo pero no consigo hacerlo en memoria sin pasar por un archivo xml.

No tenes algun ejemplo de como ir hardcodeando las lineas del xml en una
variable?

Te agradezco mucho

Saludos Eduardo

"Alberto Poblacion [MVP]"
wrote in message news:%
Mostrar la cita
#3 Alberto Poblacion [MVP]
10/10/2006 - 16:52 | Informe spam
"Eduardo Silva" wrote in message
news:
Mostrar la cita
No hace falta acceder al disco. Se hace todo en memoria. Del DataSet se
saca un XmlDataDocument (en memoria). Se crea un XslTransform y se le asigna
el xsl con un Load (acepta un XmlReader que puede ser un XmlTextReader
conectado con un string), y luego se ejecuta la función Transform que envía
el resultado a un Stream o a un TextWriter, cualquiera de los cuales puede
enviar los resultados a memoria sin pasar por un archivo.

Mostrar la cita
Bueno, una forma es ir concatenando los tags en forma de texto, es
decir:

Dim sb as new StringBuilder("<?xml version...etc...>")
sb.Append("<Raiz">)
For (...) sb.Append("<Elemento>")
...etc...
Return sb.ToString()

Otra forma es unsar un XmlTextWriter, que aunque es usual dirigirlo a un
fichero, también lo puedes dirigir a cualquier TextWriter, incluyendo un
StringWriter:

Dim sw as New StringWriter()
Dim xtw as New XmlTextWriter(sw)
xtw .WriteStartElement("root")
xtw .WriteStartElement("item")
xtw .WriteEndElement()
xtw .WriteStartElement("item")
xtw .WriteEndElement()
xtw .WriteEndElement()
Return sw.ToString()
#4 Eduardo Silva
10/10/2006 - 16:58 | Informe spam
Te pasaste muchas gracias



"Alberto Poblacion [MVP]"
wrote in message news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida