2011-10-19 4 views
0

: 일반적인 목록에 공백으로 구분 된 문자열을 직렬화 복원 (명확성을 위해 약칭 함) :I는 다음과 같이 요소 xml 파일이

<post id="1" tags="tag1 tag2 tag3 tag4" /> 

내가 XML을 역 직렬화를 사용하여 다음과 같은 클래스에이지도를 원하지만 태그 속성을 실제 List (Of String)에 매핑하는 방법을 찾을 수 없습니다.

<Serializable()> _ 
<XmlRootAttribute("post")> _ 
Public Class Post 
Private m_id As Integer 
Private m_tags As String 

<XmlAttribute("id")> _ 
Public Property Id() As Integer 
    Get 
     Return m_id 
    End Get 
    Set(ByVal value As Integer) 
     m_id = value 
    End Set 
End Property 

'<XmlAttribute("tags")> _ 
Public Property Tags() As List(Of String) 
    Get 
     Return m_tags 
    End Get 
    Set(ByVal value As List(Of String)) 
     m_tags = value 
    End Set 
End Property 
End Class 

기본 역 직렬화를 재정의 할 수있는 방법이 있습니까?

답변

2

내가 할 수있는 쉬운 일이 직렬화 가져옵니다 RawTags GET/설정 특성 및 List<string>에 RawTags을 구문 분석하지만, 시리얼 무시 가져옵니다 Tags 읽기 전용 속성을 가지고 생각
0

내가 틀릴 수도 있지만, 디시리얼라이저는 문자열로 "tag1tag2tag3tag4"와 같은 것을 보게됩니다. 분리 문자를 통해 목록으로 비 직렬화 할 수 있는지 모르겠습니다.

속성을 변수로 직렬화 한 다음 배열로 분할 한 다음 array.ToList()를 사용하여 Tags() 속성을 만들 수 있습니다. 나는 그것에 대해 갈 매끄러운 비 직렬화 방법이 있는지 확실하지 않지만 확실히 작동 할 것이다.

<Serializable()> 
    <XmlRootAttribute("post")> 
    Public Class Post 
    Private m_id As Integer 
    Private m_tags As String 

    <XmlAttribute("id")> 
    Public Property Id() As Integer 
     Get 
      Return m_id 
     End Get 
     Set(ByVal value As Integer) 
      m_id = value 
     End Set 
    End Property 

    <XmlAttribute("tags")> 
    Public Property RawTags() As String 
     Get 
      Return m_tags 
     End Get 
     Set(ByVal value As String) 
      m_tags = value 
     End Set 
    End Property 

    <XmlIgnore> 
    Public ReadOnly Property Tags() As List(Of String) 
     Get 
      Return m_tags.Split(" ").ToList() 
     End Get 
    End Property 
    End Class 
:
관련 문제