2011-02-23 2 views
1

어제 this question에게 MVCContrib을 사용하여 XML 속성을 생성하는 방법을 궁금해했습니다. 대답은 [XmlAttribute]입니다.List에서 해당 노드를 직렬화 할 때 XML 노드에 특성을 추가하는 방법은 무엇입니까?

이 때문에, 나는 성공적으로 다음과 같은 XML 얻을 [XmlAttribute]을 사용했습니다 :

<?xml version="1.0" encoding="utf-8"?> 
<TopTen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <SectorName>Property - Direct UK</SectorName> 
    <PerformanceTo>2011-01-31T00:00:00</PerformanceTo> 
    <OrderedShareClassReturns> 
    <OrderedShareClassReturn Name="Property L" Performance="11.074980" /> 
    <OrderedShareClassReturn Name="UK Property Trust I Inc" Performance="10.512610" /> 
    <OrderedShareClassReturn Name="UK Property Trust I Acc" Performance="10.466310" /> 
    <OrderedShareClassReturn Name="UK Property Trust R Inc" Performance="9.725650" /> 
    </OrderedShareClassReturns> 
</TopTen> 

지금 나는 XML에 두 번째 <ShareClassReturns> 노드를 추가 할 필요가, 그리고 그 요소에 속성을 추가 할 따라서 XML은 다음과 같이됩니다.

<?xml version="1.0" encoding="utf-8"?> 
<TopTen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <SectorName>Property - Direct UK</SectorName> 
    <PerformanceTo>2011-01-31T00:00:00</PerformanceTo> 
    <OrderedShareClassReturns order="top"> // how can I add the "top" & "bottom" attributes? 
    <OrderedShareClassReturn Name="Property L" Performance="11.074980" /> 
    <OrderedShareClassReturn Name="UK Property Trust I Inc" Performance="10.512610" /> 
    <OrderedShareClassReturn Name="UK Property Trust I Acc" Performance="10.466310" /> 
    <OrderedShareClassReturn Name="UK Property Trust R Inc" Performance="9.725650" /> 
    </OrderedShareClassReturnss> 
    <OrderedShareClassReturns order="bottom"> 
    <OrderedShareClassReturn Name="Property L" Performance="0.074980" /> 
    <OrderedShareClassReturn Name="UK Property Trust I Inc" Performance="1.512610" /> 
    <OrderedShareClassReturn Name="UK Property Trust I Acc" Performance="2.466310" /> 
    <OrderedShareClassReturn Name="UK Property Trust R Inc" Performance="3.725650" /> 
    </OrderedShareClassReturns> 
</TopTen> 

하지만 어떻게 해야할지 모르겠습니다.

public class TopTen 
{ 

    public string SectorName { get; set; } 
    public DateTime PerformanceTo { get; set; } 

    public List<OrderedShareClassReturn> OrderedShareClassReturns { get; set; } 
} 

public class OrderedShareClassReturn 
{ 
    [XmlAttribute] 
    public string Name { get; set; } 

    [XmlAttribute] 
    public decimal Performance { get; set; } 
} 

그래서 질문은, 어떻게이 <OrderedShareClassReturns> 요소에 그 속성을 추가 할 수있다 : 나는이 직렬화있어 개체는 정의? List<OrderedShareClassReturn>을 구현하는 클래스로 OrderedShareClassReturns을 정의하고 order이라는 속성이 있어야합니까? [XmlAttribute]입니까? 아니면 더 쉬운 방법이 있습니까?

public class ReturnsWrapper { 

    [XmlElement("OrderedShareClassReturn")] 
    public List<OrderedShareClassReturn> Items { get; set; } 

    [XmlAttribute("order")] 
    public string Order {get;set;} 
} 

하고 있습니다 :

public class TopTen 
{ 

    public string SectorName { get; set; } 
    public DateTime PerformanceTo { get; set; } 
    [XmlElement("OrderedShareClassReturns")] 
    public List<ReturnsWrapper> Returns { get; set; } 
} 

답변

0

은 추가 할 다른 클래스가 필요 거라고 수행
관련 문제