LINQ to XML可以两种方式和XML配合使用。第一种方式是作为简化的XML操作API,第二种方式是使用LINQ查询工具。下面我使用的是第一种方式。
主要内容:用LINQ查询语句对XML文件进行增删改查。
此方法优点:
1.我们可以使用单一语句自顶向下创建XML树。
2.我们可以使用包含树的XML文档在内存中创建并操作XML。
3.我们可以不适用Text子节点来创建和操作字符串节点。
4.一个最大的不同(改进)是,在搜索一个XML树时,不需要遍历它。相反只需要查询树并让它返回想要的结果。
这里我以一个记事本为例:记事本的内容包括,Id(编号),Title(标题),Content(内容)。
下面是有关代码:
/// <summary> /// 创建XmlDocument并实例化 /// </summary> XDocument xml = XDocument.Load(xmlPath);
/// <summary> /// Xml文件路径 /// </summary> const string xmlPath =@"../../../DAL/Notepad/NotepadXML/Notepad.xml";
/// <summary> /// 添加记事本 /// </summary> /// <param name="title">标题</param> /// <param name="content">内容</param> /// <returns>true:成功;false:失败</returns> public bool addNotepad(string number,string title, string content) { try { XElement xd = xml.Root; XElement xm = new XElement(new XElement("Notepad", new XElement("Id", number), new XElement("Title", title), new XElement("Content", content))); xd.Add(xm); xml.Save(xmlPath); } catch { return false; } return true; } #endregion
/// <summary> /// 删除一个记事本 /// </summary> /// <param name="NotepadNumber">记事本编号</param> /// <returns>true:成功;false:失败</returns> public bool delectTheNotepad(string NotepadNumber) { try { XElement xd = xml.Root; xd.Elements().First(n => n.Element("Id").Value == NotepadNumber).Remove(); xd.Save(xmlPath); } catch { return false; } return true; }
/// <summary> /// 修改记事本 /// </summary> /// <param name="NotepadNumber">记事本编号id</param> /// <param name="title">标题</param> /// <param name="content">内容</param> /// <returns>true:成功;false:失败</returns> public bool updateNotepad(string NotepadNumber, string title, string content) { try { XElement xd = xml.Root; XElement xd2 = xd.Elements().First(n => n.Element("Id").Value == NotepadNumber); xd2.Element("Title").Value = title; xd2.Element("Content").Value = content; xd.Save(xmlPath); } catch { return false; } return true; }
/// <summary> /// 获取一个文件里的所有记事本 /// </summary> /// <returns>一个文件里的所有记事本</returns> public List<string[]> getAllNotepadInFile() { List<string[]> list = new List<string[]>(); XElement xd = xml.Root; foreach (XElement item in xd.Elements()) { list.Add(new string[]{ item.Element("Id").Value, item.Element("Title").Value, item.Element("Content").Value }); } return list; }
新闻热点
疑难解答