menu_config.xml
<?xml version="1.0" encoding="utf-8"?>
<menu_config>
<menu title="文章管理" url="~/Article" target="" allow="">
<submenu title="列表" url="~/Article/list" allow="" />
<submenu />
<submenu title="新增" url="~/Article/add" allow="" />
</menu>
<menu />
<menu title="帳號管理" url="~/Admin" />
</menu_config>
//using System.Collections.Generic;
//using System.IO;
//using System.Linq;
//using System.Xml.Linq;
//using System.Text;
public class MenuDataModel
{
/*POCO 資料欄位*/
public string Title { get; set; }
public string Url { get; set; }
public string Target { get; set; }
public string Allow { get; set; }
public string Icon { get; set; }
public List<MenuDataModel> Submenu { get; set; }
/*取得資料清單*/
public static List<MenuDataModel> GetList(string menuConfigPath)
{
/*讀取 XML 檔案*/
var xmlContent = File.ReadAllText(menuConfigPath, Encoding.UTF8);
var menuDocument = XDocument.Parse(xmlContent);
/*利用 LINQ 轉成 POCO*/
return menuDocument.Root.Elements("menu")
.Select(menu => new MenuDataModel
{
/*取得 Element 上的 Attribute*/
Title = (string) menu.Attribute("title"),
Url = (string) menu.Attribute("url"),
Target = (string) menu.Attribute("target"),
Icon = (string) menu.Attribute("icon") ?? "Item",
Allow = (string) menu.Attribute("allow"),
/*取得子層級 Element 上的 Attribute*/
Submenu = menu.Elements("submenu")
.Select(sub => new MenuDataModel
{
Title = (string) sub.Attribute("title"),
Url = (string) sub.Attribute("url"),
Target = (string) sub.Attribute("target"),
Icon = (string) sub.Attribute("icon") ?? "Item",
Allow = (string) sub.Attribute("allow"),
}).ToList(),
}).ToList();
}
}
void Main()
{
var path = @"D:\menu_config.xml";
List<MenuDataModel> list = MenuDataModel.GetList(path);
list.Dump();
}
沒有留言:
張貼留言
你好!歡迎你在我的 Blog 上留下你寶貴的意見。