123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Xml;
- namespace Aitex.Core.UI.View.Frame
- {
- public class ViewItem
- {
- public string Id { get; set; }
- public string Name { get; set; }
- public string ViewClass { get; set; }
- public string ViewModelClass { get; set; }
- public bool IsSelected { get; set; }
- public List<ViewItem> SubView { get; set; }
- public Dictionary<string, string> GlobalName
- {
- get; set; }
- }
- class UILayoutParser
- {
- public ViewItem TitleView { get; private set; }
- public List<ViewItem> NavigationView { get; private set; }
- public UILayoutParser(string xmlFile)
- {
- ParseLayout(xmlFile);
- }
- void ParseLayout(string xmlFile)
- {
- if (String.IsNullOrEmpty(xmlFile))
- throw new ApplicationException("没有正确设置界面布局文件");
- XmlDocument doc = new XmlDocument();
- try
- {
- doc.Load(xmlFile);
- }
- catch (Exception ex)
- {
- throw new ApplicationException("不能解析界面布局文件"+xmlFile + " : " + ex.Message);
- }
- TitleView = ParseNode(doc.SelectSingleNode("/Aitex/Title"));
- foreach (XmlNode nav in doc.SelectNodes("/Aitex/Navigation"))
- {
- ViewItem menu = ParseNode(nav);
- if (menu == null)
- continue;
- foreach (XmlNode ele in nav.SelectNodes("SubView"))
- {
- if (menu.SubView == null)
- menu.SubView = new List<ViewItem>();
- ViewItem item = ParseNode(ele);
- if (item != null)
- menu.SubView.Add(item);
- }
- if (NavigationView == null)
- NavigationView = new List<ViewItem>();
-
- NavigationView.Add(menu);
- }
- }
- ViewItem ParseNode(XmlNode node)
- {
- if (node == null)
- return null;
- ViewItem item = new ViewItem();
- item.GlobalName = new Dictionary<string, string>();
- if (node.Attributes["Id"] != null)
- item.Id = node.Attributes["Id"].Value;
- if (node.Attributes["Name"] != null)
- item.Name = node.Attributes["Name"].Value;
- if (node.Attributes["Name.en-US"] != null)
- item.GlobalName["en-US"] = node.Attributes["Name.en-US"].Value;
- if (node.Attributes["Name.zh-CN"] != null)
- item.GlobalName["zh-CN"] = node.Attributes["Name.zh-CN"].Value;
- if (node.Attributes["ViewClass"] != null)
- item.ViewClass = node.Attributes["ViewClass"].Value;
- if (node.Attributes["ViewModelClass"] != null)
- item.ViewModelClass = node.Attributes["ViewModelClass"].Value;
- return item;
- }
- }
- }
|