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