如何序列化一个类,使其成员之一持有另一个类的实例

本文关键字:实例 成员 另一个 序列化 一个 | 更新日期: 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