如何从Xml文件中存储和检索对象

本文关键字:存储 检索 对象 文件 Xml | 更新日期: 2023-09-27 18:20:19

我有这个类:

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>

如何从Xml文件中存储和检索对象

序列化时,应该初始化一个集合,如下所示:

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(); 

希望这能有所帮助。