注释写的足够清楚 。嗯 ,以后注释一定要写好 ,最主要是的不知道什么时候会用 ,完全可以第一时间内就看得懂 。
/// <summary> /// 向xml文件添加节点信息 /// </summary> /// <param name="xmlPath"></param> public static bool AddXmlNodeInformation(string xmlPath, string link, string title) { try { //定义并从xml文件中加载节点(根节点) XElement root = XElement.Load(xmlPath); //定义并从xml文件中加载节点(根节点) IEnumerable<XElement> targetNodes = from target in XElement.Load(xmlPath).Descendants("menu") select target; int count = 0; foreach (XElement node in targetNodes) { if (node.HasElements) { count = Convert.ToInt32(node.LastNode.ToString().Substring(7, 1)); } else { count = 0; } } //定义一个新节点 XElement newNode = new XElement("m", new XAttribute("id", count + 1), new XElement("link", link), new XElement("title", title) ); //将此新节点添加到根节点下 root.Element("menu").Add(newNode); //保存对xml的更改操作 root.Save(xmlPath); return true; } catch (Exception ex) { return false; throw new Exception("向xml文件添加节点信息失败!" + ex.Message); } } /// <summary> /// 遍历xml文件的节点信息 /// </summary> /// <param name="xmlPath"></param> public static List<string> GetXmlNodeInformation(string xmlPath) { List<string> list = new List<string>(); string menu = string.Empty; try { //定义并从xml文件中加载节点(根节点) XElement rootNode = XElement.Load(xmlPath); //查询语句: 获得根节点下menu子节点(此时的子节点可以跨层次:孙节点、重孙节点......) IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("menu").Descendants("m") select target; foreach (XElement node in targetNodes) { string id = node.Attribute("id").Value; string title = node.Element("title").Value; string link = node.Element("link").Value; menu = string.Concat(id, "$", title, "$", link); list.Add(menu); } return list; } catch (Exception ex) { throw new Exception("查询menu结点信息失败!" + ex.Message); } } /// <summary> /// 查询attribute属性 /// </summary> /// <param name="xmlPath"></param> /// <returns></returns> public static string GetAttribute(string xmlPath) { try { string menu = string.Empty; //定义并从xml文件中加载节点(根节点) XElement rootNode = XElement.Load(xmlPath); //查询语句: 获得根节点下menu子节点(此时的子节点可以跨层次:孙节点、重孙节点......) IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("menu") select target; foreach (XElement node in targetNodes) { menu = node.Attribute("value").Value; } return menu; } catch (Exception ex) { throw new Exception("查询attribute属性失败!" + ex.Message); } } /// <summary> /// 修改attribute属性 /// </summary> /// <param name="xmlPath"></param> /// <param name="attribute"></param> /// <returns></returns> public static bool ModifyAttribute(string xmlPath, string attribute) { try { //定义并从xml文件中加载节点(根节点) XElement rootNode = XElement.Load(xmlPath); //将获得的节点集合中的每一个节点依次从它相应的父节点中删除 rootNode.Element("menu").Attribute("value").SetValue(attribute); rootNode.Save(xmlPath); return true; } catch (Exception ex) { return false; throw new Exception("修改attribute属性失败!" + ex.Message); } } /// <summary> /// 修改xml文件的节点信息 /// </summary> /// <param name="xmlPath"></param> public static bool ModifyXmlNodeInformation(string xmlPath, string id, string link, string title) { try { //定义并从xml文件中加载节点(根节点) XElement rootNode = XElement.Load(xmlPath); //查询语句: 获取ID属性值等于id的所有User节点(或条件用"||"符号连接) IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("menu") where target.Attribute("ID").Value == id select target; //遍历所获得的目标节点(集合) foreach (XElement node in targetNodes) { //将 节点的InnerText设置 node.Element("link").SetValue(link); node.Element("title").SetValue(title); } //保存对xml的更改操作 rootNode.Save(xmlPath); return true; } catch (Exception ex) { return false; throw new Exception("修改xml文件的节点信息失败!" + ex.Message); } } /// <summary> /// 修改xml文件的节点信息 /// </summary> /// <param name="xmlPath"></param> public static bool ModifyXmlNodeInformation(string xmlPath, List<string> list) { try { //定义并从xml文件中加载节点(根节点) XElement rootNode = XElement.Load(xmlPath); //将获得的节点集合中的每一个节点依次从它相应的父节点中删除 rootNode.Element("menu").Nodes().Remove(); XElement newNode = null; for (int i = 0; i < list.Count; i++) { string[] strarr = list[i].Split('$'); newNode = new XElement("m", new XAttribute("id", i), new XElement("link", strarr[1]), new XElement("title", strarr[0]) ); //将此新节点添加到根节点下 rootNode.Element("menu").Add(newNode); } //保存对xml的更改操作 rootNode.Save(xmlPath); return true; } catch (Exception ex) { return false; throw new Exception("修改xml文件的节点信息失败!" + ex.Message); } } /// <summary> /// 删除指定xml文件的节点信息 /// </summary> /// <param name="xmlPath"></param> public static bool DeleteXmlNodeInformation(string xmlPath, string id) { try { //定义并从xml文件中加载节点(根节点) XElement rootNode = XElement.Load(xmlPath); //查询语句: 获取ID属性值等于"XXXX"的所有User节点 IEnumerable<XElement> nodes = rootNode.Element("menu").Elements(); foreach (var item in nodes) { if (item.Attribute("id").Value == id) { item.Remove(); break; } } //保存对xml的更改操作 rootNode.Save(xmlPath); return true; } catch (Exception ex) { return false; throw new Exception("删除指定xml文件的节点信息失败!" + ex.Message); } }