Десериализация XML не устанавливает значения классов

StackOverflow https://stackoverflow.com/questions/1800164

Вопрос

Я не вижу, что делаю неправильно.Чтобы увидеть, что делается, я изменил значения конструктора на «TEST», после того как XML был прочитан (я проверил, что такое XML), значения класса все еще привязаны к «TEST».Есть еще идеи?Я уже выполняю этот процесс в другом классе, который работает нормально, ни я, ни некоторые коллеги не смогли найти разницу.

XML:

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

СОРТ:(Попробовал без XMLElement и попробовал использовать XMLAttribute, чтобы посмотреть, никаких изменений)

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:

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
Это было полезно?

Решение

Хорошо, используя предложение @maxc, я попробовал сериализацию класса и не увидел ничего другого, кроме использования заглавных букв моих атрибутов XML по сравнению с заглавными буквами.мои свойства.Я не думал, что этот материал чувствителен к регистру?Но когда я изменил его, чтобы их случаи совпадали, он работал, даже менял его туда-сюда для подтверждения.

Странный?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top