昨天我问this question,想知道如何使用MVCContrib生成带属性的XML。答案是使用[XmlAttribute]
。
因为,我已成功使用[XmlAttribute]
来获取以下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>
<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>
元素?我是否需要将OrderedShareClassReturns
定义为实现List<OrderedShareClassReturn>
的类,并且具有名为order
的属性[XmlAttribute]
?或者有更简单的方法吗?
答案 0 :(得分:0)
为此,您需要添加另一个类:
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; }
}