如何将xml序列化为具有列表的类
本文关键字:列表 xml 序列化 | 更新日期: 2023-09-27 18:29:07
我有这个xml
<KitContent>
<MsiData>
<FileName>file1</FileName>
<BaseProductVersion>1.1.0.0</BaseProductVersion>
</MsiData>
<MsiData>
<FileName>file2</FileName>
<BaseProductVersion>1.1.0.0</BaseProductVersion>
</MsiData>
</KitContent>
我想将它序列化为一个类课堂应该是什么样子?
public class KitContent
{
public List<MsiData> ???? { get; set; }
public KitContent()
{
??? = new List<MsiData>();
}
}
public class MsiData
{
public string FileName { get; set; }
public string BaseProductVersion { get; set; }
}
}
"???"我在上面的类中放入的是我的问题
我不确定你想要什么,但是???可以是任何标识符。若要将这个xml解析为C#类,IMHO最好的方法是使用xml.Serialization命名空间。
以下是示例:
class Program
{
static void Main(string[] args)
{
string xml = "<KitContent>" +
"<MsiData>" +
"<FileName>file1</FileName>" +
"<BaseProductVersion>1.1.0.0</BaseProductVersion>" +
"</MsiData>" +
"<MsiData>" +
"<FileName>file2</FileName>" +
"<BaseProductVersion>1.1.0.0</BaseProductVersion>" +
"</MsiData>" +
"</KitContent>";
XmlSerializer serializer = new XmlSerializer(typeof(KitContent));
KitContent kitContent = (KitContent)serializer.Deserialize(XmlReader.Create(new StringReader(xml)));
Console.WriteLine(kitContent.anyIdentifier[0].FileName);
Console.WriteLine(kitContent.anyIdentifier[0].OtherName);
Console.WriteLine(kitContent.anyIdentifier[1].FileName);
Console.WriteLine(kitContent.anyIdentifier[1].OtherName);
}
}
[XmlRoot("KitContent")]
public class KitContent
{
[XmlElement("MsiData")]
public List<MsiData> anyIdentifier { get; set; }
}
public class MsiData
{
public string FileName { get; set; }
[XmlElement("BaseProductVersion")]
public string OtherName { get; set; }
}
如果您的属性名称与xml中的Element相同,则不需要在该属性上放置属性。