XML로 직렬화 할 때 목록에 null 값 유지

플랫 에릭

다른 유형과 null값의 개체를 포함 할 수있는 목록이 있습니다 . 클래스를 XML로 직렬화 할 때 이러한 null을 유지하고 싶지만 자동으로 제거됩니다. 의 설정 IsNullable = trueXmlArrayItem attribute아무것도 변경하지 않았습니다.

다음과 같은 단순화 된 클래스 구조가 있습니다.

public class MyClass
{
    [XmlArray("Items")]
    [XmlArrayItem("TypeA", typeof(A), IsNullable = true)]
    [XmlArrayItem("TypeB", typeof(B), IsNullable = true)]
    public ObservableCollection<Base> MyCollection { get; set; }
}

public class Base
{

}

public class A : Base
{

}

public class B : Base
{

}

앞서 말했듯이, MyCollection두 가지 유형의 객체를 포함 할 수 있지만 null도 포함 할 수 있습니다 (예 : 인덱스 0 및 2).

이것은 내 직렬화 코드입니다.

var myClass = new MyClass();
myClass.MyCollection = new ObservableCollection<Base>
{
    null,
    new A(),
    null,
    new B()
};

var stream = new FileStream("C:\\temp\\test.xml", FileMode.Create);
var serializer = new XmlSerializer(typeof (MyClass));
serializer.Serialize(stream, myClass);

다음 XML 출력을 얻습니다.

<?xml version="1.0"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Items>
    <TypeA />
    <TypeB />
  </Items>
</MyClass>

목록에서 null 값을 어떻게 유지할 수 있습니까? 잠시 동안 검색했지만 null 속성을 제거하는 방법 만 찾았습니다.

PierrOz

흠, 실제로 IsNullable 속성을 사용하여 XmlArrayItem을 작업하는 데 성공하지 못했지만 약간 다른 XML 출력이 마음에 들지 않으면 시도해 볼 수 있습니다.

public class MyClass
    {
        [XmlArray("Items", IsNullable = true)]
        public ObservableCollection<Base> MyCollection { get; set; }
    }

    [XmlInclude(typeof(A))]
    [XmlInclude(typeof(B))]
    public class Base
    {

    }

    [XmlType("TypeA")]
    public class A : Base
    {

    }

    [XmlType("TypeB")]
    public class B : Base
    {

    }

    public static void Test()
    {
        var myClass = new MyClass() { MyCollection = new ObservableCollection<Base> { new A(), null, new B(), null } };
        var wtr = new StreamWriter("C:\\avp\\test.xml");
        var s = new XmlSerializer(typeof(MyClass));
        s.Serialize(wtr, myClass);
        wtr.Close();
    }

그런 다음 해당 출력을 얻을 수 있습니다.

<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Items>
    <Base xsi:type="TypeA" />  
    <Base xsi:nil="true" />
    <Base xsi:type="TypeB" />
    <Base xsi:nil="true" />
  </Items>
</MyClass>

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XML로 직렬화 할 때 목록에 null 값 유지

분류에서Dev

역 직렬화 할 때 JSON 목록 null

분류에서Dev

XML에서 역 직렬화 할 때 채워지지 않는 목록 속성

분류에서Dev

Jackson : 역 직렬화 할 때 맵 값의 키에 대한 참조 유지

분류에서Dev

XML을 역 직렬화 할 때 값이 null 인 것을 수정하는 방법

분류에서Dev

MongoDB에서 배열로 정렬 할 때 null 값 무시

분류에서Dev

TypeError : ...는 Python으로 객체에 새 값을 추가 할 때 JSON 직렬화 가능 오류가 아닙니다.

분류에서Dev

XML 직렬화 / 역 직렬화 할 때 루트 제거

분류에서Dev

XML 직렬화 / 역 직렬화 할 때 루트 제거

분류에서Dev

matplotlib로 목록에 목록을 플로팅 할 때 값 오류

분류에서Dev

XML을 직렬화 할 때 각 속성을 고유 한 줄에 어떻게 가져 옵니까?

분류에서Dev

MainViewModel이 직렬화 가능으로 표시되지 않았기 때문에 C # 개체를 직렬화 할 수 없습니다.

분류에서Dev

PowerShell-.NET 개체에서 역 직렬화 할 때 키 값 쌍 열거

분류에서Dev

XmlSerializer가 루트 요소에 지정된 스키마로 XML을 역 직렬화 할 수없는 이유

분류에서Dev

MVC 작업에 AJAX 게시를 수행 할 때 JSON이 객체로 역 직렬화되지 않음

분류에서Dev

Visual Studio에서 일반적인 방법으로 할 때 xml 파일의 직렬화 해제가 작동하지 않습니다.

분류에서Dev

Spring Boot 프로젝트에서 Jackson으로 JSON을 역 직렬화 할 때 하나의 필드에 null이 할당 됨

분류에서Dev

유효성 검사 속성 목록을 직렬화 할 때 오류가 발생했습니다.

분류에서Dev

PropertyName을 속성 유형으로 직렬화 할 때 발생하는 문제

분류에서Dev

직렬화 할 때 null 자식 개체를 자동으로 초기화하는 방법이 있습니까?

분류에서Dev

목록을 계속 정렬 할 때 동일한 값의 항목의 상대적 순서 유지

분류에서Dev

순서가 지정되지 않은 목록에 상대 위치 값을 사용할 때 가로로 스크롤 할 수있는 이유는 무엇입니까?

분류에서Dev

Asp.net Core WebApi에서 null 값의 사용자 지정 직렬화

분류에서Dev

C #에서 XML 직렬화를 사용할 때 목록에 끝 태그를 추가하는 방법은 무엇입니까?

분류에서Dev

때때로 변수 할당이 목록에서 작동하지 않는 이유

분류에서Dev

dart / flutter에서 JSON을 직렬화 할 때 build_runner가 파일을 생성하지 않는 이유

분류에서Dev

MongoDB에 POCO를 저장할 때 속성을 무시하지만 JSON으로 직렬화 할 때 무시하지 않습니다.

분류에서Dev

Jaxb 및 Object 클래스는 비 정렬화할 때 XML에서 값을 가져 오지 않습니다.

분류에서Dev

Groovy에서 JSON으로 직렬화 할 때 필드 이름 변경

Related 관련 기사

  1. 1

    XML로 직렬화 할 때 목록에 null 값 유지

  2. 2

    역 직렬화 할 때 JSON 목록 null

  3. 3

    XML에서 역 직렬화 할 때 채워지지 않는 목록 속성

  4. 4

    Jackson : 역 직렬화 할 때 맵 값의 키에 대한 참조 유지

  5. 5

    XML을 역 직렬화 할 때 값이 null 인 것을 수정하는 방법

  6. 6

    MongoDB에서 배열로 정렬 할 때 null 값 무시

  7. 7

    TypeError : ...는 Python으로 객체에 새 값을 추가 할 때 JSON 직렬화 가능 오류가 아닙니다.

  8. 8

    XML 직렬화 / 역 직렬화 할 때 루트 제거

  9. 9

    XML 직렬화 / 역 직렬화 할 때 루트 제거

  10. 10

    matplotlib로 목록에 목록을 플로팅 할 때 값 오류

  11. 11

    XML을 직렬화 할 때 각 속성을 고유 한 줄에 어떻게 가져 옵니까?

  12. 12

    MainViewModel이 직렬화 가능으로 표시되지 않았기 때문에 C # 개체를 직렬화 할 수 없습니다.

  13. 13

    PowerShell-.NET 개체에서 역 직렬화 할 때 키 값 쌍 열거

  14. 14

    XmlSerializer가 루트 요소에 지정된 스키마로 XML을 역 직렬화 할 수없는 이유

  15. 15

    MVC 작업에 AJAX 게시를 수행 할 때 JSON이 객체로 역 직렬화되지 않음

  16. 16

    Visual Studio에서 일반적인 방법으로 할 때 xml 파일의 직렬화 해제가 작동하지 않습니다.

  17. 17

    Spring Boot 프로젝트에서 Jackson으로 JSON을 역 직렬화 할 때 하나의 필드에 null이 할당 됨

  18. 18

    유효성 검사 속성 목록을 직렬화 할 때 오류가 발생했습니다.

  19. 19

    PropertyName을 속성 유형으로 직렬화 할 때 발생하는 문제

  20. 20

    직렬화 할 때 null 자식 개체를 자동으로 초기화하는 방법이 있습니까?

  21. 21

    목록을 계속 정렬 할 때 동일한 값의 항목의 상대적 순서 유지

  22. 22

    순서가 지정되지 않은 목록에 상대 위치 값을 사용할 때 가로로 스크롤 할 수있는 이유는 무엇입니까?

  23. 23

    Asp.net Core WebApi에서 null 값의 사용자 지정 직렬화

  24. 24

    C #에서 XML 직렬화를 사용할 때 목록에 끝 태그를 추가하는 방법은 무엇입니까?

  25. 25

    때때로 변수 할당이 목록에서 작동하지 않는 이유

  26. 26

    dart / flutter에서 JSON을 직렬화 할 때 build_runner가 파일을 생성하지 않는 이유

  27. 27

    MongoDB에 POCO를 저장할 때 속성을 무시하지만 JSON으로 직렬화 할 때 무시하지 않습니다.

  28. 28

    Jaxb 및 Object 클래스는 비 정렬화할 때 XML에서 값을 가져 오지 않습니다.

  29. 29

    Groovy에서 JSON으로 직렬화 할 때 필드 이름 변경

뜨겁다태그

보관