2017-05-10 3 views
0

私は以下のXMLを持っています。私の人生のために、逆直列化されたクラスがどのように見えるか分かりません。vb.net xmlデシリアライゼーション

<?xml version="1.0" encoding="utf-16"?> 
<Root> 
    <AL> 
     <AcctName>Test</AcctName> 
     <RetentionCodes> 
      <RetentionCode Del="N">ZZZZZ</RetentionCode> 
      <RetentionCode Del="N">XXXXX</RetentionCode> 
     </RetentionCodes> 
    </AL> 
</Root> 

は、これまでのところ私は、クラスのためにこれを持っている:

<Serializable(), XmlRoot("Root")> 
Public Class clsRecord Inherits clsFunctions(Of clsRecord) 

Private m_AL As clsAL = Nothing 
<XmlElement("AL")> 
Public Property AL() As clsAL 
    Get 
     Return m_AL 
    End Get 
    Set(ByVal value As clsAL) 
     m_AL = value 
    End Set 
End Property 

Public Sub New() 
End Sub 

End Class 

Public Class clsAL Inherits clsFunctions(Of clsAL) 

Private m_AcctName As String = String.Empty 
Public Property AcctName() As String 
    Get 
     Return m_AcctName 
    End Get 
    Set(ByVal value As String) 
     m_AcctName = value.ToString 
    End Set 
End Property 

<XmlArrayItem("RetentionCode")> 
Public Property RetentionCodes As List(Of String) 

End Class 

私はノードの値を取得することができますが、私はDELは別のRetentionCodeを作るの短いクラスに属性を取得するかどうかはわかりませんクラス。

+0

どのバージョンのVisual Studioを使用していますか? –

+1

@ Steve Sirica、何年も前から、あなたが持っているような変数やクラス名のための古い接頭辞から離れています。接頭辞を付けずに名前を付けるだけで、読みやすさが向上します。 – OneFineDay

+0

はい、RetentionCodeはクラスであり、 'DEL'はプロパティになります。ここでのXMLは、メインクラスのプロパティであるList(Of RetentionCode)、したがって複数のエントリを参照することになります。 – OneFineDay

答えて

0

RetentionCodeはクラスでなければなりません。 RetentionCodeのリストを<XmlArrayItem("RetentionCode")>を使用して作成します。

<XmlRoot("Root")> 
Public Class clsRecord Inherits clsFunctions(Of clsRecord) 
    Private m_AL As clsAL = Nothing 
    <XmlElement> 
    Public Property AL() As clsAL 
     Get 
      Return m_AL 
     End Get 
     Set(ByVal value As clsAL) 
      m_AL = value 
     End Set 
    End Property 
End Class 

Public Class clsAL Inherits clsFunctions(Of clsAL) 
    Private m_AcctName As String = String.Empty 
    <XmlElement> 
    Public Property AcctName() As String 
     Get 
      Return m_AcctName 
     End Get 
     Set(ByVal value As String) 
      m_AcctName = value.ToString 
     End Set 
    End Property 
    <XmlArrayItem("RetentionCode")> 
    Public Property RetentionCodes As List(Of RetentionCode) 
End Class 

Public Class RetentionCode 
    <XmlAttribute> 
    Public Property Del As String 
    <XmlTextAttribute> 
    Public Property Value As String 
End Class 
+0

ありがとう! –

関連する問題