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

时间:2013-06-16 18:13:09

标签: c# xml serialization

我有一个课程如下:

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#

2 个答案:

答案 0 :(得分:0)

也许与直觉相反,您只需要使用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;
}

答案 1 :(得分:0)

我建议你不要手动创建xml,而是使用这个简单的代码序列化类:

     XmlSerializer mySerializer = new XmlSerializer(objectToSerialize.GetType());
     StreamWriter myWriter = new StreamWriter(myxml.xml);
     mySerializer.Serialize(myWriter, objectToSerialize);
     myWriter.Close();

在某些情况下,您应该将SerializableAttribute应用于您的班级。