我有这堂课:
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);
有人可以给我一个解决方案吗?谢谢。
编辑:我的代码生成的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>
答案 0 :(得分:0)
序列化时,您应该初始化这样的集合:
var model = new List<MyMenu>()
{
new MyMenu() { Name = "Menu1", Type = "Ribbon" },
new MyMenu() { Name = "Menu2", Type = "Ribbon" },
};
这样,当你序列化时,你会得到这样的东西:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMyMenu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MyMenu>
<Name>Menu1</Name>
<Type>Ribbon</Type>
</MyMenu>
<MyMenu>
<Name>Menu2</Name>
<Type>Ribbon</Type>
</MyMenu>
</ArrayOfMyMenu>
您可以使用List作为序列化程序的类型来获取对象:
XmlSerializer serial = new XmlSerializer(typeof(List<MyMenu>));
System.IO.StreamReader reader = new System.IO.StreamReader("ribbonmenu.xml");
var menu = (List<MyMenu>)serial.Deserialize(reader);
reader.Close();
希望这有帮助。