retornat xml in vb webservice

25/10/2006 - 18:26 por Eduardo Silva | Informe spam
Hola hace unas semanas pedi ayuda de como hacer un web server que tiene que
devolver un xml con multiples elementos para lo cual no puedo pasar
directamente un dataset.

Alguien sabe como retornar el string de la funcion para que no lo encapsule
en un string?

Muchisimas Gracias


Alberto Poblacion fue muy amable y me mostro 3 formas de hacerlo:

1) Harcodeando linea por linea el xml
2) Usando el StringWriter y xmlTextWriter
3) Usando una jerarquia de clases

Opte por armar una jerarquia de clases que me parecio lo mas facil de
mantener y funciona perfecto:
<WebMethod()> _
Public Function GetCandidateAchievement(ByVal candidateNumber As String, _
ByVal firstName As String, lastName As String, passportNo As String) As
achievementSubmission
Dim achievementsInfo As achievementSubmission

Public Class achievementSubmission
Public submissionReceipt As New submissionReceipt
Public qualification As New qualification
End Class

Public Class submissionReceipt
Public passportNumber As String
Public responseCode As Integer
Public message As String
End Class

Y obtengo algo asi:

<?xml version="1.0" encoding="utf-8" ?>
<achievementSubmission xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">- <submissionReceipt>
<passportNumber />
<responseCode>200</responseCode>
<message /></submissionReceipt>
<qualification>
<id>0</id>
<level>0</level>
<unit />
</qualification>
</achievementSubmission>

...pero ahi el cliente me pidio que quiere algunos datos como atributos y no
como elementos y me cago la existencia ademas ahora me viene que quiere que
cuando no hay datos no valla el elemento y con la jerarquia de clases va el
tag vacio.

No encuentro la forma de adaptar las clases para agregar atributos y mis
intentos de usar los otro metodos me devuelven el xml dentro de un string :
<?xml version="1.0" encoding="utf-8" ?>
<anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d1p1:type="q1:string"
xmlns:d1p1="http://www.w3.org/2001/XMLSchema-instance"
xmlns=<achievementSubmission><submissionReceipt><responseCode /><message
/></submissionReceipt><qualification><id /><startDate /><completedDate
/><exempt /></qualification></achievementSubmission></anyType>

Creo que el error es en la forma que devuelvo el objeto en la funcion:
<WebMethod()> _
Public Function GetHardCoding()
Dim sb As New StringBuilder("<?xml version='1.0' encoding='utf-8'
?>")
sb.Append("<Raiz>")
sb.Append("<Elemento>")

sb.Append("<achievementSubmission passportNumber='ABC123'>")
sb.Append("<submissionReceipt>")
sb.Append("<responseCode>XXX</responseCode>")
sb.Append("<message>response message</message>")
sb.Append("</submissionReceipt>")
sb.Append("<qualification>")
sb.Append("<id>BCS Qualification ID reference (alphanumeric)</id>")
sb.Append("<startDate>Date candidate started Qualification (format:
YYYY-MM-DD)</startDate>")
sb.Append("<completedDate>Date candidate completed qualification
(format: YYYY-MM-DD </completedDate>")
sb.Append("<level>Qualification level</level>")
sb.Append("<unit>")
sb.Append("<id>BCS Unit / module ID refrenece (alphanumeric)</id>")
sb.Append("<startDate>Date candidate started unit/module (format:
YYYY-MM-DD)</startDate>")
sb.Append("<completedDate>Date candidate completed the unit/module
(format: YYYY-MM-DD)<completedDate>")
sb.Append("<exempt>true|false</exempt>")
sb.Append("</unit>")
sb.Append("</qualification>")
sb.Append("</achievementSubmission>")

Return sb.ToString()

End Function

Alguien sabe como retornar el string de la funcion para que no lo encapsule
en un string?


Muchisimas Gracias
 

Leer las respuestas

#1 Eduardo Silva
26/10/2006 - 10:34 | Informe spam
Y la respuesta es

<XmlAttribute()> _
Public passportNumber As String





"Eduardo Silva" wrote in message
news:u$lQgJF%
Hola hace unas semanas pedi ayuda de como hacer un web server que tiene
que
devolver un xml con multiples elementos para lo cual no puedo pasar
directamente un dataset.

Alguien sabe como retornar el string de la funcion para que no lo
encapsule
en un string?

Muchisimas Gracias


Alberto Poblacion fue muy amable y me mostro 3 formas de hacerlo:

1) Harcodeando linea por linea el xml
2) Usando el StringWriter y xmlTextWriter
3) Usando una jerarquia de clases

Opte por armar una jerarquia de clases que me parecio lo mas facil de
mantener y funciona perfecto:
<WebMethod()> _
Public Function GetCandidateAchievement(ByVal candidateNumber As String, _
ByVal firstName As String, lastName As String, passportNo As String) As
achievementSubmission
Dim achievementsInfo As achievementSubmission

Public Class achievementSubmission
Public submissionReceipt As New submissionReceipt
Public qualification As New qualification
End Class

Public Class submissionReceipt
Public passportNumber As String
Public responseCode As Integer
Public message As String
End Class

Y obtengo algo asi:

<?xml version="1.0" encoding="utf-8" ?>
<achievementSubmission
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">- <submissionReceipt>
<passportNumber />
<responseCode>200</responseCode>
<message /></submissionReceipt>
<qualification>
<id>0</id>
<level>0</level>
<unit />
</qualification>
</achievementSubmission>

...pero ahi el cliente me pidio que quiere algunos datos como atributos y
no
como elementos y me cago la existencia ademas ahora me viene que quiere
que
cuando no hay datos no valla el elemento y con la jerarquia de clases va
el
tag vacio.

No encuentro la forma de adaptar las clases para agregar atributos y mis
intentos de usar los otro metodos me devuelven el xml dentro de un string
:
<?xml version="1.0" encoding="utf-8" ?>
<anyType xmlns:q1="http://www.w3.org/2001/XMLSchema"
d1p1:type="q1:string"
xmlns:d1p1="http://www.w3.org/2001/XMLSchema-instance"
xmlns=<achievementSubmission><submissionReceipt><responseCode /><message
/></submissionReceipt><qualification><id /><startDate /><completedDate
/><exempt /></qualification></achievementSubmission></anyType>

Creo que el error es en la forma que devuelvo el objeto en la funcion:
<WebMethod()> _
Public Function GetHardCoding()
Dim sb As New StringBuilder("<?xml version='1.0' encoding='utf-8'
?>")
sb.Append("<Raiz>")
sb.Append("<Elemento>")

sb.Append("<achievementSubmission passportNumber='ABC123'>")
sb.Append("<submissionReceipt>")
sb.Append("<responseCode>XXX</responseCode>")
sb.Append("<message>response message</message>")
sb.Append("</submissionReceipt>")
sb.Append("<qualification>")
sb.Append("<id>BCS Qualification ID reference (alphanumeric)</id>")
sb.Append("<startDate>Date candidate started Qualification (format:
YYYY-MM-DD)</startDate>")
sb.Append("<completedDate>Date candidate completed qualification
(format: YYYY-MM-DD </completedDate>")
sb.Append("<level>Qualification level</level>")
sb.Append("<unit>")
sb.Append("<id>BCS Unit / module ID refrenece (alphanumeric)</id>")
sb.Append("<startDate>Date candidate started unit/module (format:
YYYY-MM-DD)</startDate>")
sb.Append("<completedDate>Date candidate completed the unit/module
(format: YYYY-MM-DD)<completedDate>")
sb.Append("<exempt>true|false</exempt>")
sb.Append("</unit>")
sb.Append("</qualification>")
sb.Append("</achievementSubmission>")

Return sb.ToString()

End Function

Alguien sabe como retornar el string de la funcion para que no lo
encapsule
en un string?


Muchisimas Gracias









Preguntas similares