Pergunta

Eu não estou vendo o que estou fazendo de errado. Para ver o que estava sendo feito, eu mudei os valores construtor para "TESTE", depois que o XML é lido em (I verificado o que o XML é), os valores de classe ainda estão presos ao "TEST". Qualquer mais ideias? Eu estou fazendo este processo já em outra classe que funciona bem, nem eu nem alguns colegas de trabalho poderia encontrar a diferença.

XML:

<IntervalTranslatorScrubberSetting>
  <LINEINDICATOR_USAGE>USG</LINEINDICATOR_USAGE>
  <FILETYPE>867</FILETYPE>
  <ESIDUNS>8417397824</ESIDUNS>
</IntervalTranslatorScrubberSetting>

CLASSE: (Tentei sem a XMLElement, e tentei usar XmlAttribute só para ver, nenhuma mudança)

Imports System.Xml.Serialization

Namespace Workers.Scrubber
    <Serializable()> _
    Public Class IntervalTranslatorScrubberSetting

#Region "Private Variables"
        Private _ESIDuns As String
        Private _FileType As String
        Private _LineIndicator_Usage As String
#End Region

#Region "Constructors"
        Sub New()
            Me.ESIDuns = "TEST"
            Me.FileType = "TEST"
            Me.LineIndicator_Usage = "TEST"
        End Sub
#End Region

#Region "Serialization"
        Private _SerializMe As New XML(Of IntervalTranslatorScrubberSetting)

        Public Function Serialize(ByVal XMLObject As IntervalTranslatorScrubberSetting) As String
            Return _SerializMe.Serialize(XMLObject)
        End Function

        Public Function Deserialize(ByVal XML As String) As IntervalTranslatorScrubberSetting
            Return _SerializMe.Deserialize(XML)
        End Function
#End Region

#Region "Properties"
        <XmlElement()> _
        Public Property ESIDuns() As String
            Get
                Return _ESIDuns
            End Get
            Set(ByVal value As String)
                _ESIDuns = value
            End Set
        End Property

        <XmlElement()> _
        Public Property FileType() As String
            Get
                Return _FileType
            End Get
            Set(ByVal value As String)
                _FileType = value
            End Set
        End Property

        <XmlElement()> _
        Public Property LineIndicator_Usage() As String
            Get
                Return _LineIndicator_Usage
            End Get
            Set(ByVal value As String)
                _LineIndicator_Usage = value
            End Set
        End Property
#End Region
    End Class
End Namespace

XML manipulação de classe:

Imports System.IO
Imports System.Xml

Public Class XML(Of T)
    Private _serializer As New System.Xml.Serialization.XmlSerializer(GetType(T))

    Public Function Serialize(ByVal myobject As T) As String
        'serialise to a memory stream, then read into a string
        Try
            Dim result As String = Nothing
            If myobject IsNot Nothing Then
                Using ms As New MemoryStream
                    Using xtw As New XmlTextWriter(ms, System.Text.Encoding.UTF8)
                        xtw.Formatting = Formatting.Indented
                        _serializer.Serialize(xtw, myobject)
                        'rewind
                        ms.Seek(0, System.IO.SeekOrigin.Begin)
                        Using reader As New StreamReader(ms, Text.Encoding.UTF8)
                            result = reader.ReadToEnd()
                            xtw.Close()
                            reader.Close()
                        End Using
                    End Using
                End Using
            End If
            Return result

        Catch ex As Exception
            Throw
        End Try
    End Function

    Public Function Deserialize(ByVal xml As String) As T
        Try
            'default to no object
            If Not String.IsNullOrEmpty(xml) Then
                Using sr As New StringReader(xml)
                    Return CType(_serializer.Deserialize(sr), T)
                End Using
            Else
                Return Nothing
            End If

        Catch ex As Exception
            Throw
        End Try
    End Function
End Class
Foi útil?

Solução

Ok usando a sugestão de @maxc, eu tentei a serialização da classe, e não vi nada diferente, exceto para a capitalização do meu XML atributos vs. minhas propriedades. Eu não acho que este material foi maiúsculas de minúsculas? Mas quando eu mudei para que seus casos combinado, ele funciona, mesmo mudou-lo e voltar para confirmar.

Estranho?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top