2011-10-31 2 views
1

내 클래스 정의 :2 개의 다른 요소에서 동일한 속성 이름을 사용하여 XML을 비 직렬화하는 방법?

[Serializable] 
public class MyClass 
{ 
    [XmlAttribute(AttributeName = "ID")] //Problem is here. same attr name ID. 
    public int XXX_ID { get; set; } 

    [XmlElement(ElementName = "XXX")] 
    public string XXX_Value{ get; set; } 

    [XmlAttribute(AttributeName = "ID")] //Problem is here. same attr name ID. 
    public int YYY_ID { get; set; } 

    [XmlElement(ElementName = "YYY")] 
    public string YYY_Value { get; set; } 
} 

내 XML :

<MyClass> 
    <XXX ID="123">Some Values</XXX> 
    <YYY ID="567">Some Values</YYY> 
</MyClass> 

내 문제 :

내가 객체에 위의 XML을 해제 직렬화합니다.

런타임 중에 오류가 발생했습니다. 두 개의 다른 요소와 동일한 루트 아래에서 동일한 속성 이름을 사용할 수 없습니다.

이 문제를 해결하는 방법은 무엇입니까?

P/S : XML을 변경할 수 없으며 소유자가 아닙니다.

미리 감사드립니다.

+0

참고 :''여기에 유용한 아무것도 [직렬화]하지 않는다 –

답변

2

이렇게하려면 (de) 직렬화를 수동으로 수행하거나 DTO와 XML 레이아웃이 대략 비슷해야합니다. 예를 들어 다음

public class Something { // need a name here to represent what this is! 
    [XmlAttribute] public int ID {get;set;} 
    [XmlText] public string Value {get;set;} 
} 

public class MyClass { 
    public Something XXX {get;set;} 
    public Something YYY {get;set;} 
} 
관련 문제