У меня есть этот класс:Как хранить и извлекать объекты из Xml файла
public class MyMenu
{
public string Name { get; set; }
public string Type { get; set; }
}
Этот класс я хочу использовать его в динамическом меню, и я не хочу, чтобы хранить свои данные в базе данных.
Я хочу сохранить его данные в файле Xml
.
До сих пор у меня есть это для сохранения данных:
string path = Server.MapPath("~/Content/Files");
XmlSerializer serial = new XmlSerializer(model.GetType());
System.IO.StreamWriter writer = new System.IO.StreamWriter(path + "\\ribbonmenu");
serial.Serialize(writer, model);
writer.Close();
И это, чтобы получить данные:
string path = Server.MapPath("~/Content/Files");
XmlSerializer serial = new XmlSerializer(typeof(RibbonMenu));
System.IO.StreamReader reader = new System.IO.StreamReader(path + "\\ribbonmenu");
RibbonMenu menu =(RibbonMenu) serial.Deserialize(reader);
reader.Close();
То, что я работает для одного объекта, чтобы сохранить и получить. мне нужно сохранить несколько объектов, и получить коллекцию объектов, что-то вроде:
IEnumerable<MyMenu> model=(IEnumerable<MyMenu>) serial.Deserialize(reader);
Может кто-нибудь дать мне решение? Благодарю.
Edit: Содержание сгенерированного Xml с моим кодом:
<?xml version="1.0" encoding="utf-8"?>
<MyMenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Id>0</Id>
<Menu>Home</Menu>
<Type>Button</Type>
</MyMenu>
Вы посмотрели [это] (http://stackoverflow.com/questions/1212742/xml-serialize-generic-list-of-serializable-objects) и [это] (http://stackoverflow.com/ вопросы/178899/сериализация-листы-оф-классы-к-XML)? – Kilazur
Трудно сказать, не видя, как выглядит XML. –
1. Я понимаю в модели сериализации кода. Модель GetType() -> - это один элемент MyMenu, поэтому у вас должна быть коллекция здесь, иначе она будет естественно десериализоваться на один элемент , 2. Вы вручную записали этот XML? Теги открытия не совпадают с закрывающими тегами. (Меню -> Действие, Тип -> Контроллер) –