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("数据库结构错误 - 列表"); } }
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; }