示例#1
0
        public void AddMenu(MenuItem menu)
        {
            XmlDocument doc = GetXmlDocumentByFileName(DbMenuItemFile);
            XmlNodeList nodeList = doc.GetElementsByTagName("Menus");
            if (nodeList.Count > 0)
            {
                XmlNode root = nodeList[0];
                if (!string.IsNullOrEmpty(menu.ParentId))
                {
                    foreach (XmlNode menuItem in root.ChildNodes)
                    {
                        bool isTarget = false;
                        foreach (XmlNode item in menuItem.ChildNodes)
                        {
                            if (item.Name.Equals("Id", StringComparison.OrdinalIgnoreCase))
                            {
                                if (item.InnerText.Equals(menu.ParentId, StringComparison.OrdinalIgnoreCase))
                                {
                                    isTarget = true;
                                }
                                break;
                            }
                        }
                        if (isTarget)
                        {
                            bool hasChildrenNode = false;
                            foreach (XmlNode item in menuItem.ChildNodes)
                            {
                                if (item.Name.Equals("Children", StringComparison.OrdinalIgnoreCase))
                                {
                                    root = item;
                                    hasChildrenNode = true;
                                    break;
                                }
                            }
                            if (!hasChildrenNode)
                            {
                                XmlElement chilrenNode = doc.CreateElement("Children");
                                menuItem.AppendChild(chilrenNode);
                                root = chilrenNode;
                            }
                        }
                    }
                }

                XmlElement listNode = doc.CreateElement("Menu");
                XmlElement nodeId = doc.CreateElement("Id");
                nodeId.InnerText = menu.Id;
                listNode.AppendChild(nodeId);

                XmlElement nodeName = doc.CreateElement("Name");
                nodeName.InnerText = menu.Name;
                listNode.AppendChild(nodeName);

                XmlElement nodeIndex = doc.CreateElement("Index");
                nodeIndex.InnerText = menu.Index.ToString();
                listNode.AppendChild(nodeIndex);

                XmlElement nodeType = doc.CreateElement("Type");
                nodeType.InnerText = ((int)menu.Type).ToString();
                listNode.AppendChild(nodeType);

                XmlElement nodeOpenNew = doc.CreateElement("IsOpenNewWindow");
                nodeOpenNew.InnerText = menu.IsOpenNewWindow.ToString();
                listNode.AppendChild(nodeOpenNew);

                XmlElement nodeInnerCode = doc.CreateElement("InnerCode");
                nodeInnerCode.InnerText = menu.InnerCode;
                listNode.AppendChild(nodeInnerCode);

                XmlElement nodeInnerId = doc.CreateElement("InnerId");
                nodeInnerId.InnerText = menu.InnerId;
                listNode.AppendChild(nodeInnerId);

                XmlElement nodeOutUrl = doc.CreateElement("OutUrl");
                nodeOutUrl.InnerText = menu.OutUrl;
                listNode.AppendChild(nodeOutUrl);

                XmlElement nodeLevel = doc.CreateElement("Level");
                nodeLevel.InnerText = menu.Level.ToString();
                listNode.AppendChild(nodeLevel);

                root.AppendChild(listNode);
                SaveXmlDocument(doc, DbListItemFile);
            }
            else
            {
                throw new ArgumentOutOfRangeException("数据库结构错误 - 列表");
            }
        }
示例#2
0
 public static MenuItem LoadByXmlNode(XmlNode xmlNode, string parentId)
 {
     MenuItem item = new MenuItem();
     item.ParentId = parentId;
     foreach (XmlNode child in xmlNode.ChildNodes)
     {
         switch (child.Name.ToUpper())
         {
             case "ID":
                 item.Id = child.InnerText;
                 break;
             case "NAME":
                 item.Name = child.InnerText;
                 break;
             case "INDEX":
                 item.Index = int.Parse(child.InnerText);
                 break;
             case "ISOPENNEWWINDOW":
                 item.IsOpenNewWindow = bool.Parse(child.InnerText);
                 break;
             case "INNERCODE":
                 item.InnerCode = child.InnerText;
                 break;
             case "INNERID":
                 item.InnerId = child.InnerText;
                 break;
             case "OUTURL":
                 item.OutUrl = child.InnerText;
                 break;
             case "LEVEL":
                 item.Level = int.Parse(child.InnerText);
                 break;
             case "CHILDREN":
                 item.ChildrenNode = child;
                 break;
         }
     }
     return item;
 }