XMLSerializer并创建一个具有属性的XML Array
我试图创建一个可以通过XMLSerializer序列化为XML的类。
目标XML应该看起来像这样
<subject_datas type="array">
<subject_data>
...
</subject_data>
<subject_data>
...
</subject_data>
</subject_datas>
问题是subject_datas标签的type属性。 我所尝试的是将其设计为派生List,并使用这样的XMLAttribute属性附加属性
[XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas : List<SubjectData>
{
public SubjectDatas (IEnumerable<SubjectData> source)
{
this.AddRange(source);
Type = "array";
}
[XmlAttribute(AttributeName = "type")]
public string Type { get; set; }
}
但是因为该类是一个集合,所以XMLSerializer将只序列化集合中的对象而不是集合本身。 所以我的类型属性被忽略:(
你可以使用构造而不是继承
[XmlRoot(ElementName = "subject_datas")]
public class SubjectDatas
{
[XmlElement(ElementName = "subject_data")]
public List<SubjectData> SubjectDatas2 { get; set; }
public SubjectDatas(IEnumerable<SubjectData> source)
{
SubjectDatas2= new List<SubjectData>();
this.SubjectDatas2.AddRange(source);
Type = "array";
}
private SubjectDatas()
{
Type = "array";
}
[XmlAttribute(AttributeName = "type")]
public string Type { get; set; }
}
链接地址: http://www.djcxy.com/p/65141.html
上一篇: XMLSerializer and creating an XML Array with an attribute