对象的XML序列化列表

man*_*ang 1 c# xml serialization xml-serialization

查看有关XML序列化的Microsoft文章:

https://msdn.microsoft.com/zh-CN/library/58a18dwa.aspx

它们在“序列化对象数组”下给出了一个示例,如下所示:

public class PurchaseOrder
{
    public Item [] ItemsOrders
}

public class Item
{
    public string ItemID
    public decimal ItemPrice
}
Run Code Online (Sandbox Code Playgroud)

输出:

<PurchaseOrder>
    <Items>
        <Item>
            <ItemID>aaa111</ItemID>
            <ItemPrice>34.22</ItemPrice>
        </Item>
        <Item>
            <ItemID>bbb222</ItemID>
            <ItemPrice>2.89</ItemPrice>
        </Item>
    </Items>
</PurchaseOrder>
Run Code Online (Sandbox Code Playgroud)

困扰我的是“商品”标签。在我看来,仅“ Item”标签应该是“ PurchaseOrder”的子级。“项目”标签似乎不必要且令人困惑。我可能是错的。

有没有办法让这个例子像这样序列化:

<PurchaseOrder>
    <Item>
        <ItemID>aaa111</ItemID>
        <ItemPrice>34.22</ItemPrice>
    </Item>
    <Item>
        <ItemID>bbb222</ItemID>
        <ItemPrice>2.89</ItemPrice>
    </Item>
</PurchaseOrder>
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 6

您可以使用属性控制序列化。从“使用属性控制XML序列化 ”:要删除代表整个数组的元素,请使用[XmlElement]属性:

public class Group{
    [XmlElement]
    public Employee[] Employees;
}
Run Code Online (Sandbox Code Playgroud)

这产生

<Group>
    <Employees>
        <Name>Haley</Name>
    </Employees>
    <Employees>
        <Name>Noriko</Name>
    </Employees>
    <Employees>
        <Name>Marco</Name>
    </Employees>
</Group>
Run Code Online (Sandbox Code Playgroud)