/// <summary> /// 根据XElement元素生成工程子项(递归使用) /// </summary> /// <param name="project"></param> /// <param name="projectItem"></param> /// <param name="el"></param> private static void BuildDirectoryItem(IProject project, DirectoryProjectItem projectItem, XElement el) { foreach (XElement e1 in el.Elements()) { int count = e1.Elements().Count <XElement>(); string type = e1.Attribute("Type").Value; string name = e1.Attribute("Name").Value; if (count == 0) { projectItem.Items.Add(new CustomProjectItem(project, new ItemType(type), name)); } else { projectItem.Items.Add(new DirectoryProjectItem(project, new ItemType(type), name)); BuildDirectoryItem(project, projectItem.Items[0] as DirectoryProjectItem, e1); } } }
/// <summary> /// 返回这个工程子项的生成的节点 /// </summary> /// <param name="item"></param> /// <returns></returns> private ExtTreeNode BuildNode(ATNET.Project.ProjectItem item) { ExtTreeNode node = new CustomTreeNode(null, item); DirectoryProjectItem directoryItem = item as DirectoryProjectItem; if (directoryItem != null) { node = new DirectoryTreeNode(null, item); if (directoryItem.Items.Count > 0) { foreach (ATNET.Project.ProjectItem pitem in directoryItem.Items) { ExtTreeNode node1 = BuildNode(pitem); node.Items.Add(node1); } } return(node as DirectoryTreeNode); } return(node as CustomTreeNode); }
/// <summary> /// 降XElement元素转换成工程子项 /// </summary> /// <param name="rootElement">工程文件中包含的根元素</param> /// <param name="project">子项属于的工程</param> private static void ParseToProjectItem(XElement rootElement, IProject project) { IEnumerable <XElement> element = from el in rootElement.Elements() select el; IEnumerable <XElement> element1 = element.Where(el => el.Name == "Items"); foreach (XElement e1 in element1.Nodes <XElement>()) { int count = e1.Elements().Count <XElement>(); string type = e1.Attribute("Type").Value; string name = e1.Attribute("Name").Value; if (count == 0)//CustomProjectItem { project.AddProjectItem(new CustomProjectItem(project, new ItemType(type), name)); } else//DirectoryProjectItem { DirectoryProjectItem projectItem = new DirectoryProjectItem(project, new ItemType(type), name); project.AddProjectItem(projectItem); BuildDirectoryItem(project, projectItem, e1); } } }