序列化成Xml文档

本文关键字:文档 Xml 序列化 | 更新日期: 2023-09-27 18:08:42

我正在尝试序列化这个类,它将在xml文档中显示这个。

<InventoryType>
    <Date>20160925</Date>
    <HotelId>123</HotelId>
    <RoomType>KB</RoomType>
    <Quantity>5</Quantity>
</InventoryType>
<InventoryType>
    <Date>20160901</Date>
    <HotelId>123</HotelId>
    <RoomType>QB</RoomType>
    <Quantity>3</Quantity>
</InventoryType>

我有一个列表,我想遍历它,并插入3个日期。像上面。但我不知道该怎么做。我知道我需要一个forloop for datetime。但是我还需要为列表再添加一个内部for循环吗?

public void CreateInvenList()
{
    Random rnd = new Random();
    int num = rnd.Next(1, 10);
    DateTime end = new DateTime(2016,09,28);
    DateTime start = new DateTime(2016, 09, 25);
    List<InventoryType> Inventoryttype = new List<InventoryType>();
    Inventoryttype.Add(new InventoryType(start, "123", "KB", num));
    Inventoryttype.Add(new InventoryType(start, "124", "qB", num));
    for ( DateTime date = start; date < end; date = date.AddDays(1) )
    {
        for (??)
        {
            // what goes in here? 
        }
    }
    serial = new XmlSerializer(Inventoryttype.GetType()); 
    sw = new StreamWriter(Inventory_Filename);
    serial.Serialize(sw, Inventoryttype);
    sw.Close();
}

序列化成Xml文档

不,你不需要另一个循环为每一天赋值

for ( DateTime date = start; date < end; date = date.AddDays(1) )
{
    num = rnd.Next();
    Inventoryttype.Add(new InventoryType(date, "123", "KB", num));
    Inventoryttype.Add(new InventoryType(date, "124", "qB", num));
}

如果您只想添加给定日期的房间/酒店类型,则可以这样做。但是,如果您有一个包含酒店和房间的数据源,那么您将需要添加一个内循环来更改酒店,如果每个酒店的房间类型都更改,那么您应该为房间添加另一个内循环。

如果你有一个包含多个酒店的数据源,但是在所有酒店中有'KB'和'QB'作为常见的房间类型,你的代码应该是这样的:

for ( DateTime date = start; date < end; date = date.AddDays(1) )
{
    foreach (var hotel in hotels)
    {
        num = rnd.Next();
        Inventoryttype.Add(new InventoryType(date, hotel.id, "KB", num));
        Inventoryttype.Add(new InventoryType(date, hotel.id, "QB", num));
    )
}

如果您要为每个酒店指定特定的房间类型以及默认房间类型的房间数量,则可以这样设置:

for ( DateTime date = start; date < end; date = date.AddDays(1) )
{
    foreach (var hotel in hotels)
    {
        foreach (var roomType in hotels.roomTypes)
        {
            num = rnd.Next();
            Inventoryttype.Add(new InventoryType(date, hotel.id, roomType.id, num));
        }
    )
}

希望能有所帮助。