누락 된 정보로 사용자 지정 개체 생성 파일 직렬화

프랭키

문제가 있습니다. serialize사용자 지정 개체 나열 하려고하면 모든 정보가 누락됩니다.

내 직렬화 출력 :

  <?xml version="1.0" ?> 
- <ArrayOfCustomObject xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CustomObject /> 
  <CustomObject /> 
  <CustomObject /> 
  </ArrayOfCustomObject>

내 직렬화 접근 방식을 보여주는 코드가 있습니다.

Dim xmlSerializer As New XmlSerializer(GetType(List(Of CustomObject )))

Using fileStrm As New StreamWriter("C:\Users\MyUser\Desktop\xmlTest.xml", FileMode.OpenOrCreate)
   xmlSerializer.Serialize(fileStrm, objectsList)
End Using

CustomObject는 다음과 같습니다.

Imports System.Xml.Serialization

<XmlRootAttribute("SomeObject")>
Public Class CustomObject 

    Sub New()

    End Sub

    Sub New(ByVal someTable As DataTable, ByVal id As Integer, ByVal title As String)
        _someTable = someTable 
        _title = title
        _id = id
    End Sub

    Private _someTable As DataTable
    Private _title As String
    Private _id As Integer

    <XmlAttribute("Title")>
    Public ReadOnly Property Title As String
        Get
            Return _title
        End Get
    End Property

    <XmlAttribute("Table")>
    Public ReadOnly Property SomeTable As DataTable
        Get
            Return _someTable 
        End Get
    End Property

    <XmlAttribute("ID")>
    Public ReadOnly Property ID As Integer
        Get
            Return _id
        End Get
    End Property
End Class

내 실수는 어디에 있습니까? (C #이 더 적절하다면 자유롭게 대답하십시오)

아드리아노 레 페티

XmlSerializer setter없이 속성을 무시합니다.

예를 들어 귀하의 경우이 속성은 무시됩니다.

<XmlAttribute("Table")>
Public ReadOnly Property SomeTable As DataTable
    Get
        Return _someTable 
    End Get
End Property

읽기 전용이기 때문에 : serializer는 양방향에서 작동하도록 설계되었으므로 나중에 역 직렬화 할 수없는 것을 직렬화하는 것은 의미가 없습니다 (관점 상).

속성을 무시하는 데는 여러 가지 이유가 있습니다 (자세한 내용은 MSDN 참조, 목록이 매우 길고 항상 명확하지는 않음). 유지하려는 경우 수행 수있는 작업 XmlSerializer은 setter 메서드를 추가하거나 BinarySerializer현재 개체로 전달 된 속성을 사용하여 deserialization을위한 특수 개체 (하는 것과 유사한 대리)를 만드는 것입니다 .

<XmlRootAttribute("SomeObject")>
Public Class CustomObjectSurrogate

    Sub New()
        ' Uncomment this if you plan to support deserialization too
        ' _realObject = New CustomObject()
    End Sub

    Sub New(realObject As CustomObject)
        _realObject = realObject
    End Sub

    Private _realObject As CustomObject

    <XmlAttribute("Table")>
    Public Property SomeTable As DataTable
        Get
            Return _realObject.SomeTable 
        End Get
        Set(value As DataTable)
            ' Ignore, this is a dummy object for serialization
        End Set
    End Property

    ' More properties here
End Class

이를 통해 직렬화합니다 CustomObjectSurrogagte( CustomObject속성 에 액세스하기위한 얇은 래퍼에 지나지 않음 ). 이러한 방식으로 CustomObject구현을 원하는만큼 깔끔하게 유지할 수 있습니다 .

물론 IXmlSerializable 인터페이스를 구현 하여 XmlSerializer원하는 작업을 정확하게 수행 할 수 있지만 많은 작업이 필요할 수 있습니다 (특히 직렬화 된 인터페이스가 현재 개체 모델과 많이 다를 수있는 경우).

특히 (의 모든 더러운 작업없이 ) 다른 것을 직렬화 (그리고 결국 역 직렬화) 할 수 있기 때문에 ( 예를 들어 사전, 일반 컬렉션 및 날짜에 대해 생각하고 있습니다) surragte 솔루션을 좋아 합니다 IXmlSerializable. 확인 CustomObjectSurrogate중첩 클래스의 내부를 CustomObject당신은 심지어위한 공공 세터가 필요하지 않습니다 CustomObject속성을.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JAXB 역 직렬화를 통한 개체 생성 사용자 지정

분류에서Dev

사용자 지정 빌드 구성에서 보관할 때 누락 된 파일이 있습니다.

분류에서Dev

C ++ 11 사용자 지정 개체의 Ordered 집합에서 누락 된 값

분류에서Dev

json 개체 내에서 사용자 지정 개체 직렬화

분류에서Dev

XML을 객체로 역 직렬화 할 때 누락 된 자식 노드

분류에서Dev

누락 된 사용자 정의 to_string ()의 컴파일 시간 감지

분류에서Dev

Word 파일을 Java 문자열로 : 형식화 정보가 누락되고 잘못된 문자가 표시됨

분류에서Dev

NSMutableDictionary를 상속하고 NSKeyedArchiver로 직렬화 된 사용자 지정 개체는 역 직렬화 할 수 없습니다.

분류에서Dev

Django : 사용자 지정 개체 JSON 직렬화

분류에서Dev

PowerPoint가 누락 된 사용자 지정 글꼴을 Calibri로 대체합니까?

분류에서Dev

개인 구성원별로 사용자 지정 개체 정렬

분류에서Dev

JSON.Net 역 직렬화로 누락 된 속성 채우기

분류에서Dev

설치된 deb 패키지에 누락 된 파일 (사용자 정의 된 dockerized debian)

분류에서Dev

Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

분류에서Dev

zsh 프로세스 대체로 생성 된 파일 확장자 지정

분류에서Dev

rxjs Observable을 사용자 지정 비즈니스 개체로 직렬화

분류에서Dev

누락 된 파일이있는 고정 된 크기의 이미지 몽타주 생성

분류에서Dev

MD5 해시 용 Python + JSON 직렬화-두 개의 동등한 객체가 정확히 동일한 문자열로 직렬화된다는 것을 어떻게 보장 할 수 있습니까?

분류에서Dev

사용자 지정 XmlSerialization을 사용하여 복잡한 개체 역 직렬화

분류에서Dev

JSON에서 /에서 중첩 된 파생 개체를 사용하여 C # 데이터 개체 역 직렬화

분류에서Dev

생성자에 구성 파일을 삽입 한 후 개체 속성을 보호 된 것으로 설정하는 방법

분류에서Dev

사용자 정의 객체 목록 JSON이 파이썬으로 직렬화

분류에서Dev

기본 생성자에서 오버로드 된 생성자를 호출 할 때 개체 상태 정보 유지

분류에서Dev

다른 파이썬 생성기를 사용하여 생성 된 숫자 정렬

분류에서Dev

사용자 지정 클래스의 개체에 대한 NSMutableArray의 직렬화 및 역 직렬화

분류에서Dev

지정된 사용자에 대한 사용자 목록을 자동으로 확인하는 파일 생성

분류에서Dev

지정된 사용자에 대한 사용자 목록을 자동으로 확인하는 파일 생성

분류에서Dev

사용자 지정 속성 (사용자 속성)이 누락 된 Azure Service Bus 새 SDK

분류에서Dev

개조 : GSON 사용자 지정 자식 목록 역 직렬화

Related 관련 기사

  1. 1

    JAXB 역 직렬화를 통한 개체 생성 사용자 지정

  2. 2

    사용자 지정 빌드 구성에서 보관할 때 누락 된 파일이 있습니다.

  3. 3

    C ++ 11 사용자 지정 개체의 Ordered 집합에서 누락 된 값

  4. 4

    json 개체 내에서 사용자 지정 개체 직렬화

  5. 5

    XML을 객체로 역 직렬화 할 때 누락 된 자식 노드

  6. 6

    누락 된 사용자 정의 to_string ()의 컴파일 시간 감지

  7. 7

    Word 파일을 Java 문자열로 : 형식화 정보가 누락되고 잘못된 문자가 표시됨

  8. 8

    NSMutableDictionary를 상속하고 NSKeyedArchiver로 직렬화 된 사용자 지정 개체는 역 직렬화 할 수 없습니다.

  9. 9

    Django : 사용자 지정 개체 JSON 직렬화

  10. 10

    PowerPoint가 누락 된 사용자 지정 글꼴을 Calibri로 대체합니까?

  11. 11

    개인 구성원별로 사용자 지정 개체 정렬

  12. 12

    JSON.Net 역 직렬화로 누락 된 속성 채우기

  13. 13

    설치된 deb 패키지에 누락 된 파일 (사용자 정의 된 dockerized debian)

  14. 14

    Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

  15. 15

    zsh 프로세스 대체로 생성 된 파일 확장자 지정

  16. 16

    rxjs Observable을 사용자 지정 비즈니스 개체로 직렬화

  17. 17

    누락 된 파일이있는 고정 된 크기의 이미지 몽타주 생성

  18. 18

    MD5 해시 용 Python + JSON 직렬화-두 개의 동등한 객체가 정확히 동일한 문자열로 직렬화된다는 것을 어떻게 보장 할 수 있습니까?

  19. 19

    사용자 지정 XmlSerialization을 사용하여 복잡한 개체 역 직렬화

  20. 20

    JSON에서 /에서 중첩 된 파생 개체를 사용하여 C # 데이터 개체 역 직렬화

  21. 21

    생성자에 구성 파일을 삽입 한 후 개체 속성을 보호 된 것으로 설정하는 방법

  22. 22

    사용자 정의 객체 목록 JSON이 파이썬으로 직렬화

  23. 23

    기본 생성자에서 오버로드 된 생성자를 호출 할 때 개체 상태 정보 유지

  24. 24

    다른 파이썬 생성기를 사용하여 생성 된 숫자 정렬

  25. 25

    사용자 지정 클래스의 개체에 대한 NSMutableArray의 직렬화 및 역 직렬화

  26. 26

    지정된 사용자에 대한 사용자 목록을 자동으로 확인하는 파일 생성

  27. 27

    지정된 사용자에 대한 사용자 목록을 자동으로 확인하는 파일 생성

  28. 28

    사용자 지정 속성 (사용자 속성)이 누락 된 Azure Service Bus 새 SDK

  29. 29

    개조 : GSON 사용자 지정 자식 목록 역 직렬화

뜨겁다태그

보관