Deserializar cadena XML en el Objeto VB.NET

He visto un montón de ejemplos en línea, pero ya no puedo hacer sentido de la aplicación o el ejemplo es muy diferente de la mía para que me transponer. Tengo un XML

<Interfaces>
    <Interface>
        <InterfaceCode>987</InterfaceCode>
        <AccessID>asdf</AccessID>
        <Password>654321</Password>
    </Interface>
    <Interface>
        <InterfaceCode>789</InterfaceCode>
        <AccessID>      </AccessID>
        <Password>      </Password>
    </Interface>
</Interfaces>

Y las siguientes clases

<Serializable(), XmlRoot("Interfaces"), XmlType("Interfaces")>
Public Class InterfacesModel
    Property Interfaces As New List(Of InterfaceModel)
End Class

<Serializable(), XmlType("Interface")>
Public Class InterfaceModel
    Property InterfaceCode As String
    Property AccessID As String
    Property Password As String
End Class

El código siguiente genera un InterfacesModel con un vacío Interfaces lista:

Dim str As String = xmlString
Dim interfaces As InterfacesModel

Dim serializer As New XmlSerializer(GetType(InterfacesModel))
Using reader As TextReader = New StringReader(str)
     interfaces = serializer.Deserialize(reader)
End Using

Esperaría que pueblan las Interfaces como una Lista(de InterfaceModel) para que yo pueda realizar una para cada una de las Interfaces y hacer algo para cada Interfaz.

InformationsquelleAutor theB3RV | 2014-12-01

2 Kommentare

  1. 6

    Necesita XmlElement("Interface") en su propiedad. También, usted puede deshacerse de la XmlType atributos. No creo que los están haciendo nada para usted.

    <Serializable(), XmlRoot("Interfaces")>
    Public Class InterfacesModel
        <XmlElement("Interface")> Property Interfaces As New List(Of InterfaceModel)
    End Class
    
    <Serializable()>
    Public Class InterfaceModel
        Property InterfaceCode As String
        Property AccessID As String
        Property Password As String
    End Class
  2. 0

    Cuando estoy escribiendo serializable clases yo no utilice etiquetas que sólo tiene que utilizar algo como esto y funciona de la misma

    <Serializable>
    Public Class Interfaces
        Public interface as InterfaceModel() 'The () Defines an array of InterFaceModels
    End Class
    
    <SerialzableAttribute>
    Public Class InterfaceModel
        Public InterFaceCode As String
        Public AccessID As String
        Public Password As String
    End Class

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea