개별 요소에 대한 XML 직렬화 재정의

주하

두 항목이 포함 된 개체 목록이 있습니다. 각 개체에는 여러 속성이 포함되어 있습니다. 내 문제는 두 항목을 모두 xml로 직렬화해야하지만 두 요소에 대해 다른 속성을 사용해야한다는 것입니다.

이미 XmlAttributeOverrides를 시도했습니다.

예제 클래스 :

[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
    public class Apple
    {

[System.Xml.Serialization.XmlElementAttribute(DataType="nonNegativeInteger")]
       public int Index{ get; set;}

       [System.Xml.Serialization.XmlAttributeAttribute()]
       public int Size{ get; set;}

       [System.Xml.Serialization.XmlAttributeAttribute()]
       public decimal Weight{ get; set;}
    }

     void Test()
     {
        List<Apple> apples = new List<Apple>
        {
           new Apple {Index = 0, Size = 1},
           new Apple {Index = 1, Weight = 4}
        };
     }

직렬화 후 결과 :

& ltApple Size = 1> 
<Index & gt0 </ Index> 
</ Apple> 
& ltApple Weight = 4> 
<Index & gt1 </ Index> 
</ Apple>
마크 그 라벨

이것은 "조건부 직렬화"처럼 보입니다. 여기서는 Nullable<T>"값이 있습니까?"에 대한 저장소로 사용 하고 있으며, public bool ShouldSerialize*()수행 할 작업을 결정하기 위해 많은 serializer에서 패턴을 인식합니다.

    private int? _size;
    [XmlAttribute]
    public int Size
    {
        get => _size.GetValueOrDefault();
        set => _size = value;
    }

    public bool ShouldSerializeSize() => _size.HasValue;

    private decimal? _weight;
    [XmlAttribute]
    public decimal Weight
    {
        get => _weight.GetValueOrDefault();
        set => _weight = value;
    }

    public bool ShouldSerializeWeight() => _weight.HasValue;

이를 통해 직렬 변환기는 기본적으로 다음을 수행합니다 (의사 코드).

if (obj.ShouldSerializeSize()) output.WriteAttribute("Size", obj.Size);
if (obj.ShouldSerializeWeight()) output.WriteAttribute("Weight", obj.Weight);

"양수인 경우에만 직렬화"와 같은 다른 규칙을 사용할 수도 있습니다.

[XmlAttribute]
public int Size {get;set;}

public bool ShouldSerializeSize() => Size > 0;

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

XML의 특정 속성에 대한 직렬화 비활성화

상속된 개체에 대한 XML 직렬화 C#

XML 직렬화 오류에 대한 요소 이름 제공

C # 언어의 XML 직렬화에 대한 배열 이름

encoding / xml 동적 구조 요소에 대한 비 정렬 화

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

C # 직렬화의 클래스 속성에 대한 별칭

개체에 대한 매개 변수를 사용하여 XML 역 직렬화

직렬화 된 개체에 대한 사용자 지정 $ type 값

Typescript의 역 직렬화 된 개체에 대한 Getter 메서드

thymeleaf 템플릿 내부의 JSON 직렬화에 대한 개체

동일한 이름의 XML 요소 및 XML 배열 항목 직렬화

개별 요소의 차이점에 대한 두 개의 정렬되지 않은 목록 비교

선택적 요소에서 목록의 XML 역 직렬화

C #의 목록이있는 개체에 XML 역 직렬화

Jackson JSON 직렬화, 레벨 정의에 의한 재귀 회피

XML 직렬화 후 목록 요소에 대한 래퍼 요소가없는 방법

XML에서 개체 역 직렬화로

다형성 개체에 대한 Jackson 사용자 지정 역 직렬화

동일한 객체에 대한 XML 직렬화 다른 elementName

직렬화 직전에 개체 수정

NULL을 가져 오는 VB.NET 개체에 대한 JSON의 역 직렬화

세 개의 요소에 대한 배열 정렬

요소 별 Java 정렬 XML

jackson-dataformat-xml 사용자 지정 루트 요소를 사용한 XML 역 직렬화?

xsi : type 값에 콜론과 하이픈이있는 개체에 대한 C # xml 역 직렬화

객체 그래프 역 / 직렬화에 대한 yaml 대 xml의 장점과 단점은 무엇입니까?

요소 이름이 다른 동일한 개체를 사용하여 XML 역 직렬화

동일한 속성으로 xml 요소 역 직렬화

TOP 리스트

  1. 1

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  2. 2

    MDRotatingPieChart를 회전하면 각도 대신 x / y 위치가 변경됩니다.

  3. 3

    c # 웹 사이트에서 텍스트를 복사하는 방법 (소스 코드 아님)

  4. 4

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  5. 5

    ArrayBufferLike의 typescript 정의의 깊은 의미

  6. 6

    Ionic 2 로더가 적시에 표시되지 않음

  7. 7

    복사 / 붙여 넣기 비활성화

  8. 8

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    QT Designer를 사용하여 GUI에 이미지 삽입

  11. 11

    java Apache POI Word 기존 테이블 셀 스타일 및 서식이있는 행 삽입

  12. 12

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  13. 13

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  14. 14

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  15. 15

    어떻게 같은 CustomInfoWindow 다른 이벤트를 할 수 있습니다

  16. 16

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  17. 17

    dataSnapShot.getValue () 반환 데이터베이스에 그겁니다 데이터 종료 널 (null)

  18. 18

    ORA-12557 TNS : 프로토콜 어댑터를로드 할 수 없습니다

  19. 19

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  20. 20

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  21. 21

    C # Asp.net 웹 API-JSON / XML 변환기 API 만들기

뜨겁다태그

보관