我可能搞砸了一个设计决定.我没有使用强类型的自定义对象集合,而是使用了通用List.基本上,我所拥有的是:
public class AreaFields
{
[XmlArray("Items")]
[XmlArrayItem("Item")]
public List<Fields> Fields { set; get; }
[XmlAttribute]
int id { set; get; }
}
public class Fields
{
[XmlAttribute]
public string Name { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
在整个应用程序中,我使用了List<AreaFields>Now,我需要将列表序列化为XML.我希望得到的是:
<SomeXMLTag>
<AreaFields id='1000'>
<Items>
<Item Name="Test1" />
<Item Name="Test2" />
</Items>
</AreaFields>
<AreaFields id='1001'>
<Items>
<Item Name="Test1" />
<Item Name="Test2" />
</Items>
</AreaFields>
</SomeXMLTag>
Run Code Online (Sandbox Code Playgroud)
由于我无法序列化List <>(或者我可以吗?),我将必须序列化列表中的每个项目.
Ex: List<AreaFields> list = new List<AreaFields>();
// more code to add to list
list[0].GetRawXML(); //A method i have to serialize
Run Code Online (Sandbox Code Playgroud)
你需要一个包装类; 然后MyWrapper按照您的示例序列化实例以获取xml.
[XmlRoot("SomeXMLTag")]
public class MyWrapper
{
[XmlElement("AreaFields")]
public List<AreaFields> AreaFields { get; set; }
}
public class AreaFields
{
[XmlArray("Items")]
[XmlArrayItem("Item")]
public List<Fields> Fields { set; get; }
[XmlAttribute]
public int id { set; get; }
}
public class Fields
{
[XmlAttribute]
public string Name { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1742 次 |
| 最近记录: |