Pregunta

Esta es una versión simplificada del XML devuelto.

<?xml version="1.0" encoding="UTF-8" ?> 
    <kml xmlns="http://earth.google.com/kml/2.0">
        <Response>
            <name>1321 herbert street, Warren, MI</name> 
            <Status>
                <code>200</code> 
                <request>geocode</request> 
            </Status>
            <Placemark id="p1">
                <address>Herbert St, Madison Heights, MI 48071, USA</address> 
            </Placemark>        
            <Placemark id="p2">
                <address>Add2</address> 
            </Placemark>
        </Response>
    </kml>  

En un anterior posterior, que receieved ayuda sobre cómo analizar estos datos en objetos. Ahora. Necesito un poco más de ayuda poco al tratar de leer en teh nodos marca de posición que se repiten.

Esta es la estructura del objeto que estoy tratando de leer en:

Namespace GoogleAddress

    Public Class kml

        Private _Response As Response

        Public Property Response() As Response
            Get
                Return _Response
            End Get
            Set(ByVal value As Response)
                _Response = value
            End Set
        End Property

    End Class

    Public Class Response

        Private _name As String
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property

        Private _Status As Status
        Public Property Status() As Status
            Get
                Return _Status
            End Get
            Set(ByVal value As Status)
                _Status = value
            End Set
        End Property

        Private _Placemark() As Placemark
        '
        Public Property Placemark() As Placemark()
            Get
                Return _Placemark
            End Get
            Set(ByVal value As Placemark())
                _Placemark = value
            End Set
        End Property

    End Class


    Public Class Status

        Private _Code As Integer
        Public Property Code() As Integer
            Get
                Return _Code
            End Get
            Set(ByVal value As Integer)
                _Code = value
            End Set
        End Property

        Private _Request As String
        Public Property Request() As String
            Get
                Return _Request
            End Get
            Set(ByVal value As String)
                _Request = value
            End Set
        End Property

    End Class

    Public Class Placemark

        Private _Address As String
        Public Property Address() As String
            Get
                Return _Address
            End Get
            Set(ByVal value As String)
                _Address = value
            End Set
        End Property

    End Class

End Namespace

Yo uso la siguiente rutina para deserializar el XML se muestra arriba y poblar el objeto anterior:

   Public Shared Function DeSerializeFromXMLString(ByVal TypeToDeserialize As System.Type, _
                                                    ByVal xmlString As String) As Object

        Dim bytes() As Byte = System.Text.Encoding.UTF8.GetBytes(xmlString)
        Dim mem As MemoryStream = New MemoryStream(bytes)
        Dim ser As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(GetType(GoogleAddress.kml), "http://earth.google.com/kml/2.0")
        Dim KmlResult As GoogleAddress.kml = TryCast(ser.Deserialize(mem), GoogleAddress.kml) '

        Return KmlResult

    End Function

... Pero theobjects no están siendo adecuadamente pobladas y yo no reciben ningún objeto marca de posición (0 gama len).

Cualquier suggstions?

¿Fue útil?

Solución

Es necesario especificar algunos Atributos .

Namespace GoogleAddress
    Public Class kml
        Private _Response As Response
        Public Property Response() As Response
            Get
                Return _Response
            End Get
            Set(ByVal value As Response)
                _Response = value
            End Set
        End Property
    End Class

    Public Class Response
        Private _name As String
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property

        Private _Status As Status
        Public Property Status() As Status
            Get
                Return _Status
            End Get
            Set(ByVal value As Status)
                _Status = value
            End Set
        End Property

        <Xml.Serialization.XmlElement("Placemark")> Public Placemark As Placemark()
    End Class
    Public Class Status
        Private _Code As Integer
        Public Property Code() As Integer
            Get
                Return _Code
            End Get
            Set(ByVal value As Integer)
                _Code = value
            End Set
        End Property

        Private _Request As String

        Public Property Request() As String
            Get
                Return _Request
            End Get
            Set(ByVal value As String)
                _Request = value
            End Set
        End Property
    End Class

    Public Class Placemark
        Private _Address As String
        Private _ID As String
        <Xml.Serialization.XmlAttribute("ID")> Public Property ID() As String
            Get
                Return _ID
            End Get
            Set(ByVal value As String)
                _ID = value
            End Set
        End Property

        Public Property Address() As String
            Get
                Return _Address
            End Get
            Set(ByVal value As String)
                _Address = value
            End Set
        End Property
    End Class
End Namespace
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top