Utilización de xml en web service
Publicado por Jorge (18 intervenciones) el 08/06/2016 17:30:34
Hola a todos.
soy nuevo en el foro y andaba buscando una solución a un problema que tengo en estos momentos.
Estoy preparando un web service que estará alojado en un servidor de la Intranet de mi empresa.
Desde otras aplicaciones se realizaran llamadas a este para recibir datos de una base de datos SQL Server.
Tanto el web service como las aplciaciones de formulario están todas programadas en VB.NET
Mi problema radica a la hora de retornar un fichero xml a la aplicación desde el web service.
Tengo una función en el ws que recibe un parametro y retorna un xmlDocument con un filtro de la base de datos.
La llamada a la función del ws desde la aplicación también guarda el resultado sobre otra variable xmldocument
Pero se ve que no realiza correctamente esto pues me da el siguiente error:
No se puede convertir un objeto de tipo 'System.Xml.XmlElement' al tipo 'System.Xml.XmlDocument'
No veo claro de donde me puede venir el error y tanto el retorno de la función del ws como la variable sobre la que se descarga en la llamada al ws son ambas XmDocument
Agradecería su ayuda.
Un saludo.
Modifico para dejaros el código que estoy utilizando.
El código de la función en el ws es el siguiente, de momento es una prueba, ya realizaré la carga real de los datos.
<WebMethod()> Public Function PRUEBA_XML2() As XmlDocument
Dim SETTINGS As XmlWriterSettings = New XmlWriterSettings()
SETTINGS.Indent = True
Using myXml As System.Xml.XmlWriter = System.Xml.XmlWriter.Create("C:\PRUEBAS\1SALIDA.XML", SETTINGS)
'INICIO EL ARCHIVO
myXml.WriteStartDocument(False)
'PONGO UN COMENTARIO
myXml.WriteComment("MI PRIMER XML")
'CREO ATRIBUTOS
myXml.WriteStartElement("suscripciones")
myXml.WriteStartElement("numero_registros")
'ESCRIBO EL NÚMERO DE REGISTROS
myXml.WriteString("2")
'CIERRO ATRIBUTOS
myXml.WriteEndElement() 'CIERRA NUMERO_REGISTROS
'CREO ATRIBUTOS
myXml.WriteStartElement("registros")
'GUARDO LOS DOS REGISTROS
myXml.WriteStartElement("email") 'ABRO PRIMER REGISTRO
myXml.WriteString("[email protected]") 'ESCRIBO REGISTRO
myXml.WriteEndElement() 'CIERRA PRIMER REGISTRO
myXml.WriteElementString("email", "[email protected]") 'creo registro y lo cierro en una linea
'CIERRO ATRIBUTOS
myXml.WriteEndElement() 'CIERRA REGISTROS
'CIERRO ATRIBUTOS
myXml.WriteEndElement() 'CIERRA SUSCRIPCIONES
myXml.Flush()
myXml.Close()
End Using
Dim doc As XmlDocument = New XmlDocument()
doc.Load("C:\Pruebas\1salida.xml")
Return doc
End Function
El código de la función del programa que está llamando a esta función de ws es el siguiente:
Private Sub Button11_Click(sender As System.Object, e As System.EventArgs) Handles Button11.Click
Dim EP As New WSFUDEN.Service1
Dim myXml As XmlDocument
myXml = EP.PRUEBA_XML2()
MsgBox("recuperado")
MUESTRA_XML(myXml)
End Sub
Sub MUESTRA_XML(ByRef MiXml As System.Xml.XmlDocument)
MsgBox(MiXml.OUTERXML)
End Sub
soy nuevo en el foro y andaba buscando una solución a un problema que tengo en estos momentos.
Estoy preparando un web service que estará alojado en un servidor de la Intranet de mi empresa.
Desde otras aplicaciones se realizaran llamadas a este para recibir datos de una base de datos SQL Server.
Tanto el web service como las aplciaciones de formulario están todas programadas en VB.NET
Mi problema radica a la hora de retornar un fichero xml a la aplicación desde el web service.
Tengo una función en el ws que recibe un parametro y retorna un xmlDocument con un filtro de la base de datos.
La llamada a la función del ws desde la aplicación también guarda el resultado sobre otra variable xmldocument
Pero se ve que no realiza correctamente esto pues me da el siguiente error:
No se puede convertir un objeto de tipo 'System.Xml.XmlElement' al tipo 'System.Xml.XmlDocument'
No veo claro de donde me puede venir el error y tanto el retorno de la función del ws como la variable sobre la que se descarga en la llamada al ws son ambas XmDocument
Agradecería su ayuda.
Un saludo.
Modifico para dejaros el código que estoy utilizando.
El código de la función en el ws es el siguiente, de momento es una prueba, ya realizaré la carga real de los datos.
<WebMethod()> Public Function PRUEBA_XML2() As XmlDocument
Dim SETTINGS As XmlWriterSettings = New XmlWriterSettings()
SETTINGS.Indent = True
Using myXml As System.Xml.XmlWriter = System.Xml.XmlWriter.Create("C:\PRUEBAS\1SALIDA.XML", SETTINGS)
'INICIO EL ARCHIVO
myXml.WriteStartDocument(False)
'PONGO UN COMENTARIO
myXml.WriteComment("MI PRIMER XML")
'CREO ATRIBUTOS
myXml.WriteStartElement("suscripciones")
myXml.WriteStartElement("numero_registros")
'ESCRIBO EL NÚMERO DE REGISTROS
myXml.WriteString("2")
'CIERRO ATRIBUTOS
myXml.WriteEndElement() 'CIERRA NUMERO_REGISTROS
'CREO ATRIBUTOS
myXml.WriteStartElement("registros")
'GUARDO LOS DOS REGISTROS
myXml.WriteStartElement("email") 'ABRO PRIMER REGISTRO
myXml.WriteString("[email protected]") 'ESCRIBO REGISTRO
myXml.WriteEndElement() 'CIERRA PRIMER REGISTRO
myXml.WriteElementString("email", "[email protected]") 'creo registro y lo cierro en una linea
'CIERRO ATRIBUTOS
myXml.WriteEndElement() 'CIERRA REGISTROS
'CIERRO ATRIBUTOS
myXml.WriteEndElement() 'CIERRA SUSCRIPCIONES
myXml.Flush()
myXml.Close()
End Using
Dim doc As XmlDocument = New XmlDocument()
doc.Load("C:\Pruebas\1salida.xml")
Return doc
End Function
El código de la función del programa que está llamando a esta función de ws es el siguiente:
Private Sub Button11_Click(sender As System.Object, e As System.EventArgs) Handles Button11.Click
Dim EP As New WSFUDEN.Service1
Dim myXml As XmlDocument
myXml = EP.PRUEBA_XML2()
MsgBox("recuperado")
MUESTRA_XML(myXml)
End Sub
Sub MUESTRA_XML(ByRef MiXml As System.Xml.XmlDocument)
MsgBox(MiXml.OUTERXML)
End Sub
Valora esta pregunta


0