如何序列化一个类,使其成员之一持有另一个类的实例
本文关键字:实例 成员 另一个 序列化 一个 | 更新日期: 2023-09-27 18:18:42
我有一个类如下:
public class ItemGroup
{
public int type;
public Item[] item;
}
public class Item
{
public string name;
public int category;
}
我想把ItemGroup转换成这样的XML
<ItemGroup>
<type>1</type>
<Item>
<name>HELLO</name>
<category>1</category>
</Item>
<Item>
<name>WORLD</name>
<category>2</category>
</Item>
</ItemGroup>
在类中需要使用什么XML标记来指定?我用的是c#
也许与直觉相反,您只需要使用XmlElement
属性。这将指示XmlSerializer
一个接一个地构建Item
集,以匹配您提供的规格。此外,您需要显式地指定元素名称,因为您的字段是小写的"item",但您希望有大写的"item"。
public class ItemGroup
{
public int type;
[XmlElement("Item")]
public Item[] item;
}
public class Item
{
public string name;
public int category;
}
我建议您不要手动创建xml,而是使用下面的简单代码序列化类:
XmlSerializer mySerializer = new XmlSerializer(objectToSerialize.GetType());
StreamWriter myWriter = new StreamWriter(myxml.xml);
mySerializer.Serialize(myWriter, objectToSerialize);
myWriter.Close();
在某些情况下,你应该在你的类中应用SerializableAttribute