C#xml创建修改读取删除帮助类XmlHelper.cs
生活随笔
收集整理的這篇文章主要介紹了
C#xml创建修改读取删除帮助类XmlHelper.cs
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<strong><span style="color:#ff0000;">【XML幫助類】C#xml創建修改讀取刪除幫助類XmlHelper.cs
<a target=_blank href="http://bbs.cskin.net/forum.php?mod=viewthread&tid=189&fromuid=2446">http://bbs.cskin.net/forum.php?mod=viewthread&tid=189&fromuid=2446</a>
(出處: CSkin論壇)
介紹:
</span></strong> 一個很好用的Xml幫助類,包含創建文件,創建節點,獲取指定XPtah表達式的節點的值,刪除指定節點等等,需要引用命名空間System.Xml。using System.Xml;
using System.Data;namespace HelloCsharp.Utilities
{/// <summary>/// Xml的操作公共類/// </summary> public class XmlHelper{#region 字段定義/// <summary>/// XML文件的物理路徑/// </summary>private string _filePath = string.Empty;/// <summary>/// Xml文檔/// </summary>private XmlDocument _xml;/// <summary>/// XML的根節點/// </summary>private XmlElement _element;#endregion#region 構造方法/// <summary>/// 實例化XmlHelper對象/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param>public XmlHelper(string xmlFilePath){//獲取XML文件的絕對路徑_filePath = SysHelper.GetPath(xmlFilePath);}#endregion#region 創建XML的根節點/// <summary>/// 創建XML的根節點/// </summary>private void CreateXMLElement(){//創建一個XML對象_xml = new XmlDocument();if (DirFileHelper.IsExistFile(_filePath)){//加載XML文件_xml.Load(this._filePath);}//為XML的根節點賦值_element = _xml.DocumentElement;}#endregion#region 獲取指定XPath表達式的節點對象/// <summary>/// 獲取指定XPath表達式的節點對象/// </summary> /// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public XmlNode GetNode(string xPath){//創建XML的根節點CreateXMLElement();//返回XPath節點return _element.SelectSingleNode(xPath);}#endregion#region 獲取指定XPath表達式節點的值/// <summary>/// 獲取指定XPath表達式節點的值/// </summary>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public string GetValue(string xPath){//創建XML的根節點CreateXMLElement();//返回XPath節點的值return _element.SelectSingleNode(xPath).InnerText;}#endregion#region 獲取指定XPath表達式節點的屬性值/// <summary>/// 獲取指定XPath表達式節點的屬性值/// </summary>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>/// <param name="attributeName">屬性名</param>public string GetAttributeValue(string xPath, string attributeName){//創建XML的根節點CreateXMLElement();//返回XPath節點的屬性值return _element.SelectSingleNode(xPath).Attributes[attributeName].Value;}#endregion#region 新增節點/// <summary>/// 1. 功能:新增節點。/// 2. 使用條件:將任意節點插入到當前Xml文件中。/// </summary> /// <param name="xmlNode">要插入的Xml節點</param>public void AppendNode(XmlNode xmlNode){//創建XML的根節點CreateXMLElement();//導入節點XmlNode node = _xml.ImportNode(xmlNode, true);//將節點插入到根節點下_element.AppendChild(node);}/// <summary>/// 1. 功能:新增節點。/// 2. 使用條件:將DataSet中的第一條記錄插入Xml文件中。/// </summary> /// <param name="ds">DataSet的實例,該DataSet中應該只有一條記錄</param>public void AppendNode(DataSet ds){//創建XmlDataDocument對象XmlDataDocument xmlDataDocument = new XmlDataDocument(ds);//導入節點XmlNode node = xmlDataDocument.DocumentElement.FirstChild;//將節點插入到根節點下AppendNode(node);}#endregion#region 刪除節點/// <summary>/// 刪除指定XPath表達式的節點/// </summary> /// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public void RemoveNode(string xPath){//創建XML的根節點CreateXMLElement();//獲取要刪除的節點XmlNode node = _xml.SelectSingleNode(xPath);//刪除節點_element.RemoveChild(node);}#endregion //刪除節點#region 保存XML文件/// <summary>/// 保存XML文件/// </summary> public void Save(){//創建XML的根節點CreateXMLElement();//保存XML文件_xml.Save(this._filePath);}#endregion //保存XML文件#region 靜態方法#region 創建根節點對象/// <summary>/// 創建根節點對象/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param> private static XmlElement CreateRootElement(string xmlFilePath){//定義變量,表示XML文件的絕對路徑string filePath = "";//獲取XML文件的絕對路徑filePath = SysHelper.GetPath(xmlFilePath);//創建XmlDocument對象XmlDocument xmlDocument = new XmlDocument();//加載XML文件xmlDocument.Load(filePath);//返回根節點return xmlDocument.DocumentElement;}#endregion#region 獲取指定XPath表達式節點的值/// <summary>/// 獲取指定XPath表達式節點的值/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public static string GetValue(string xmlFilePath, string xPath){//創建根對象XmlElement rootElement = CreateRootElement(xmlFilePath);//返回XPath節點的值return rootElement.SelectSingleNode(xPath).InnerText;}#endregion#region 獲取指定XPath表達式節點的屬性值/// <summary>/// 獲取指定XPath表達式節點的屬性值/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>/// <param name="attributeName">屬性名</param>public static string GetAttributeValue(string xmlFilePath, string xPath, string attributeName){//創建根對象XmlElement rootElement = CreateRootElement(xmlFilePath);//返回XPath節點的屬性值return rootElement.SelectSingleNode(xPath).Attributes[attributeName].Value;}#endregion#endregionpublic static void SetValue(string xmlFilePath, string xPath, string newtext){//string path = SysHelper.GetPath(xmlFilePath);//var queryXML = from xmlLog in xelem.Descendants("msg_log")// //所有名字為Bin的記錄// where xmlLog.Element("user").Value == "Bin"// select xmlLog;//foreach (XElement el in queryXML)//{// el.Element("user").Value = "LiuBin";//開始修改//}//xelem.Save(path);}}
}
總結
以上是生活随笔為你收集整理的C#xml创建修改读取删除帮助类XmlHelper.cs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防止程序多开的两种方法
- 下一篇: C#中WinForm程序退出方法