C# 常用类-IO-ClassXML
生活随笔
收集整理的這篇文章主要介紹了
C# 常用类-IO-ClassXML
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自己驗證收藏的代碼, 用來備份代碼, 內容全部來自網上, 時間有些久遠, 因此沒有標注出處. using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;class ClassXML
{//聲明一個XmlDocument空對象protected XmlDocument XmlDoc = new XmlDocument();/// <summary>/// 構造函數,導入Xml文件/// </summary>/// <param name="xmlFile">文件虛擬路徑</param>public ClassXML(string xmlFile){try{XmlDoc.Load(GetXmlFilePath(xmlFile)); //載入Xml文檔
}catch (System.Exception ex){throw ex;}}/// <summary>/// 析構函數/// </summary>~ClassXML(){XmlDoc = null; //釋放XmlDocument對象
}/// <summary>/// 保存文件/// </summary>/// <param name="filePath">文件虛擬路徑</param>public void Save(string filePath){try{XmlDoc.Save(GetXmlFilePath(filePath));}catch (System.Exception ex){throw ex;}}/// <summary>/// 返回Xml文件實際路徑/// </summary>/// <param name="xmlFile">文件虛擬路徑</param>/// <returns></returns>public string GetXmlFilePath(string xmlFile){return xmlFile;//return HttpContext.Current.Server.MapPath(xmlFile);
}/// <summary>/// 根據Xml文件的節點路徑,返回一個DataSet數據集/// </summary>/// <param name="XmlPathNode">Xml文件的某個節點</param>/// <returns></returns>public DataSet GetDs(string XmlPathNode){DataSet ds = new DataSet();try{System.IO.StringReader read = new System.IO.StringReader(XmlDoc.SelectSingleNode(XmlPathNode).OuterXml);ds.ReadXml(read); //利用DataSet的ReadXml方法讀取StringReader文件流
read.Close();}catch{ }return ds;}/// <summary>/// 屬性查詢,返回屬性值/// </summary>/// <param name="XmlPathNode">屬性所在的節點</param>/// <param name="Attrib">屬性</param>/// <returns></returns>public string SelectAttrib(string XmlPathNode, string Attrib){string _strNode = "";try{_strNode = XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value;}catch{ }return _strNode;}/// <summary>/// 節點查詢,返回節點值/// </summary>/// <param name="XmlPathNode">節點的路徑</param>/// <returns></returns>public string SelectNodeText(string XmlPathNode){string _nodeTxt = XmlDoc.SelectSingleNode(XmlPathNode).InnerText;if (_nodeTxt == null || _nodeTxt == "")return "";elsereturn _nodeTxt;}/// <summary>/// 節點值查詢判斷/// </summary>/// <param name="XmlPathNode">父節點</param>/// <param name="index">節點索引</param>/// <param name="NodeText">節點值</param>/// <returns></returns>public bool SelectNode(string XmlPathNode, int index, string NodeText){try{XmlNodeList _NodeList = XmlDoc.SelectNodes(XmlPathNode);//循環遍歷節點,查詢是否存在該節點for (int i = 0; i < _NodeList.Count; i++){if (_NodeList[i].ChildNodes[index].InnerText == NodeText){return true;break;}}}catch{}return false;}/// <summary>/// 獲取子節點個數/// </summary>/// <param name="XmlPathNode">父節點</param>/// <returns></returns>public int NodeCount(string XmlPathNode){int i = 0;try{i = XmlDoc.SelectSingleNode(XmlPathNode).ChildNodes.Count;}catch{i = 0;}return i;}/// <summary>/// 更新一個節點的內容/// </summary>/// <param name="XmlPathNode">節點的路徑</param>/// <param name="Content">新的節點值</param>/// <returns></returns>public bool UpdateNode(string XmlPathNode, string NodeContent){try{XmlDoc.SelectSingleNode(XmlPathNode).InnerText = NodeContent;return true;}catch{return false;}}/// <summary>/// 更新N個節點值/// </summary>/// <param name="XmlParentNode">父節點</param>/// <param name="XmlNode">子節點</param>/// <param name="NodeContent">子節點內容</param>/// <returns></returns>public bool UpdateNode(string XmlParentNode, string[] XmlNode, string[] NodeContent){try{//根據節點數組循環修改節點值for (int i = 0; i < XmlNode.Length; i++){XmlDoc.SelectSingleNode(XmlParentNode + "/" + XmlNode[i]).InnerText = NodeContent[i];}return true;}catch{return false;}}/// <summary>/// 修改屬性/// </summary>/// <param name="XmlPathNode">屬性所在的節點</param>/// <param name="Attrib">屬性名</param>/// <param name="Content">屬性值</param>/// <returns></returns>public bool UpdateAttrib(string XmlPathNode, string Attrib, string AttribContent){try{//修改屬性值XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value = AttribContent;return true;}catch{return false;}}/// <summary>/// 添加屬性/// </summary>/// <param name="MainNode">屬性所在節點</param>/// <param name="Attrib">屬性名</param>/// <param name="AttribContent">屬性值</param>/// <returns></returns>public bool InsertAttrib(string MainNode, string Attrib, string AttribContent){try{XmlElement objNode = (XmlElement)XmlDoc.SelectSingleNode(MainNode); //強制轉化成XmlElement對象objNode.SetAttribute(Attrib, AttribContent); //XmlElement對象添加屬性方法 return true;}catch{return false;}}/// <summary>/// 插入一個節點,帶N個子節點/// </summary>/// <param name="MainNode">插入節點的父節點</param>/// <param name="ChildNode">插入節點的元素名</param>/// <param name="Element">插入節點的子節點名數組</param>/// <param name="Content">插入節點的子節點內容數組</param>/// <returns></returns>public bool InsertNode(string MainNode, string ChildNode, string[] Element, string[] Content){try{XmlNode objRootNode = XmlDoc.SelectSingleNode(MainNode); //聲明XmlNode對象XmlElement objChildNode = XmlDoc.CreateElement(ChildNode); //創建XmlElement對象
objRootNode.AppendChild(objChildNode);for (int i = 0; i < Element.Length; i++) //循環插入節點元素
{XmlElement objElement = XmlDoc.CreateElement(Element[i]);objElement.InnerText = Content[i];objChildNode.AppendChild(objElement);}return true;}catch{return false;}}/// <summary>/// 刪除一個節點/// </summary>/// <param name="Node">要刪除的節點</param>/// <returns></returns>public bool DeleteNode(string Node){try{//XmlNode的RemoveChild方法來刪除節點及其所有子節點
XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node));return true;}catch{return false;}}
} ClassXML
?
調用代碼:
string _fileName = System.Threading.Thread.GetDomain().BaseDirectory + "Config.xml";private void LoadPar(){ClassXML xml = new ClassXML(_fileName);edtMachineName.Text = xml.SelectNodeText("Config/MachineName");edtOrderNO.Text = xml.SelectNodeText("Config/OrderNO");edtOperator.Text = xml.SelectNodeText("Config/Operator");}private void SetPar(){ClassXML xml=new ClassXML(_fileName);xml.UpdateNode("Config/MachineName", edtMachineName.Text);xml.UpdateNode("Config/OrderNO", edtOrderNO.Text);xml.UpdateNode("Config/Operator", edtOperator.Text);xml.Save(_fileName);} Demo?
轉載于:https://www.cnblogs.com/percent10/p/10186166.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的C# 常用类-IO-ClassXML的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周一02.1编程语言介绍
- 下一篇: dp凸优化/wqs二分学习笔记(洛谷43