내가 잘못하고있는 것을 보지 못했습니다. 무슨 일이 있었는지 확인하기 위해 XML을 읽은 후에 (나는 XML이 무엇인지 확인했다) 생성자 값을 "TEST"로 변경했다. 클래스 값은 여전히 "TEST"에 고정되어있다. 더 이상 아이디어가 없습니까? 나는 잘 작동하는 또 다른 수업에서 이미이 과정을하고 있으며, 나도 동료들도 그 차이점을 발견 할 수 없었다.XML 역 직렬화가 클래스 값을 설정하지 않음
XML :
<IntervalTranslatorScrubberSetting>
<LINEINDICATOR_USAGE>USG</LINEINDICATOR_USAGE>
<FILETYPE>867</FILETYPE>
<ESIDUNS>8417397824</ESIDUNS>
</IntervalTranslatorScrubberSetting>
등급 (class) :합니다 (들은 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
즉시 문제를 볼 수 없습니다. 제공 한 XML은이 코드에서 생성되지 않은 것처럼 보입니다.이 클래스를 serialize하여 생성 된 XML과 비교하는 것이 도움이됩니까? – Nestor
나쁜 생각은 아니지만 왜 그런 생각을하지 않았는지 확신 할 수 없습니다. 나를 만났을 때 무슨 일이 일어나는지보십시오. – RiddlerDev
이것은 질문과 관련이 없지만,'System.Xml.Serialization'에 대해''속성이 필요 없습니다. –
MarkJ