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