C#使用XML序列化操作菜单的方法
本文实例讲述了C#使用XML序列化操作菜单的方法。分享给大家供大家参考。具体分析如下:
之前的一篇文章《C#递归读取XML菜单数据的方法》没使用XML序列化来操作菜单,而且发现那还有一个问题,就是在XML菜单的某个菜单节点前加上一些注释代码的就不能读取,现在使用XML序列化后可以很方便的读取,故在此写一写。
XML菜单的节点代码如下:
<?xmlversion="1.0"encoding="utf-8"?> <ZCSoft.Netxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Applications> <ApplicationID="OA"Text="OA管理系统"> <Modules> <ModuleID="OA_System"Text="系统管理"> <Menus> <MenuID="OA_System_UserManager"Text="人员管理"URL="System/UserManager/UserManagerList.aspx"></Menu> <MenuID="OA_System_RoleManager"Text="角色管理"URL="System/RoleManager/RoleManagerList.aspx"></Menu> <MenuID="OA_System_LoginLog"Text="登录日志"URL="System/Log/LoginLogList.aspx"></Menu> <MenuID="OA_System_OperateLog"Text="操作日志"URL="System/Log/OperateLogList.aspx"></Menu> </Menus> </Module> <ModuleID="OA_TargetManage"Text="目标管理"> <Menus> <MenuID="OA_TargetManage_TargetSetup"Text="目标设定"URL="OA/TargetManage/TargetSetupList.aspx"> </Menu> </Menus> </Module> </Modules> </Application> <Applications> </ZCSoft.Net>
这里面有一个节点:Applications(应用程序节点),里面可以放多个Application,而每个Application节点里面只包含一个Modules(模块节点),Modules有多个Module,每个Module又只有一个Menus(菜单节点),而Menus里有多个Menu。而每个节点都有两个公共的属性:ID和Text。
故这里写一个公共的属性类:BaseAttribute,前面记得加上序列化标识Serializable,代码如下:
[Serializable] publicclassBaseAttribute { [XmlAttribute(AttributeName="ID")] publicstringID{get;set;}
[XmlAttribute(AttributeName="Text")] publicstringText{get;set;} }