Visual Basic.NET - Utilización de xml en web service

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 200 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder