Я хочу поместить внутри Submenu
два разных тега: Item
и Separator
, а затем проанализировать XML-документ с помощью XmlSerializer. Я могу сделать это, когда Submenu
содержит только Item
последовательность.Сериализация XML - коллекция нескольких типов
Образцовый XML документ:
<?xml version="1.0" encoding="utf-8" ?>
<Navigation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="...">
<Menu Name="Main">
<Item Caption="File">
<Submenu>
<Item Caption="New" Command="." />
<Item Caption="Open" Command="." />
<Separator />
<Item Caption="Exit" Command="." />
</Submenu>
</Item>
</Menu>
</Navigation>
И (не) работает C# код:
[Serializable]
[XmlRoot("Navigation", IsNullable = false)]
public class Navigation
{
[XmlElement("Menu")]
public List<Menu> MenuCollection { get; set; }
}
[Serializable]
[XmlRoot("Menu", IsNullable = false)]
public class Menu
{
[XmlAttribute("Name")]
public string Name { get; set; }
[XmlElement("Item")]
public List<Item> Items { get; set; }
}
[Serializable]
[XmlRoot("Item", IsNullable = false)]
public class Item
{
[XmlAttribute("Caption")]
public string Caption { get; set; }
[XmlAttribute("Command")]
public string Command { get; set; }
[XmlElement("Submenu", IsNullable = true)]
public Menu Submenu { get; set; }
}
Menu.Items
должны содержит элементы и разделители. Как мне это сделать?