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; }
新聞熱點
疑難解答