日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

仿Jquery链式操作的xml操作类

發布時間:2023/12/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 仿Jquery链式操作的xml操作类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經常需要對xml文件進行操作,參考了Jquery的鏈式操作后實現了xmlHelper類。

代碼using?System;
using?System.Data;
using?System.Configuration;
using?System.Xml;
namespace?ConfigUpdate
{
????
///?<summary>
????
///?調用非靜態的操作方法的
????
///?</summary>
????public?class?XmlHelper
????{
????????
private?XmlDocument?_doc;
????????
private?string?_xmlPath;
????????
public?XmlHelper(string?xmlPath)
????????{
????????????_xmlPath?
=?xmlPath;
????????????_doc?
=?new?XmlDocument();
????????????_doc.Load(xmlPath);
????????}

????????
///?<summary>
????????
///?讀取數據
????????
///?</summary>
????????
///?<param?name="xmlPath">路徑</param>
????????
///?<param?name="node">節點</param>
????????
///?<param?name="attribute">屬性名,非空時返回該屬性值,否則返回串聯值</param>
????????
///?<returns>string</returns>
????????public?static?string?Select(string?xmlPath,?string?node,?string?attribute)
????????{
????????????XmlDocument?doc?
=?new?XmlDocument();
????????????doc.Load(xmlPath);
????????????XmlNode?xn?
=?GetNode(doc,?node);
????????????
string?value?=?(String.IsNullOrEmpty(attribute)???xn.InnerText?:?xn.Attributes[attribute].Value);
????????????doc.Clone();
????????????
return?value;
????????}

????????
///?<summary>
????????
///?調用此方法后不再需要調用Execute方法。
????????
///?</summary>
????????
///?<param?name="node"></param>
????????
///?<param?name="attribute"></param>
????????
///?<returns></returns>
????????public?string?Select(string?node,?string?attribute)
????????{
????????????
string?value?=?String.Empty;?;
????????????XmlNode?xn?
=?GetNode(_doc,?node);
????????????value?
=?(String.IsNullOrEmpty(attribute)???xn.InnerText?:?xn.Attributes[attribute].Value);
????????????
return?value;
????????}

????????
///?<summary>
????????
///?插入數據
????????
///?</summary>
????????
///?<param?name="xmlPath">路徑</param>
????????
///?<param?name="node">節點</param>
????????
///?<param?name="element">元素名,非空時插入新元素,否則在該元素中插入屬性</param>
????????
///?<param?name="attribute">屬性名,非空時插入該元素屬性值,否則插入元素值</param>
????????
///?<param?name="value"></param>
????????
///?<returns></returns>
????????public?XmlHelper?Insert(string?node,?string?element,?string?attribute,?string?value)
????????{
????????????Add(_doc,?_xmlPath,?node,?element,?attribute,?value);
????????????
return?this;
????????}

????????
public?static?void?Insert(string?xmlPath,?string?node,?string?element,?string?attribute,?string?value)
????????{
????????????XmlDocument?doc?
=?new?XmlDocument();
????????????doc.Load(xmlPath);
????????????Add(doc,?xmlPath,?node,?element,?attribute,?value);
????????}

????????
private?static?void?Add(XmlDocument?doc,?string?xmlPath,?string?node,?string?element,?string?attribute,?string?value)
????????{
????????????XmlNode?xn?
=?GetNode(doc,?node);
????????????
if?(String.IsNullOrEmpty(element))
????????????{
????????????????
if?(!String.IsNullOrEmpty(attribute))
????????????????{
????????????????????XmlElement?xe?
=?(XmlElement)xn;
????????????????????xe.SetAttribute(attribute,?value);
????????????????}
????????????}
????????????
else
????????????{
????????????????XmlElement?xe?
=?doc.CreateElement(element);
????????????????
if?(String.IsNullOrEmpty(attribute))
????????????????????xe.InnerText?
=?value;
????????????????
else
????????????????????xe.SetAttribute(attribute,?value);
????????????????xn.AppendChild(xe);
????????????}
????????????doc.Save(xmlPath);
????????}

????????
///?<summary>
????????
///?修改數據
????????
///?</summary>
????????
///?<param?name="xmlPath">路徑</param>
????????
///?<param?name="node">節點</param>
????????
///?<param?name="attribute">屬性名,非空時修改該節點屬性值,否則修改節點值</param>
????????
///?<param?name="value"></param>
????????
///?<returns></returns>
????????public?static?void?Update(string?xmlPath,?string?node,?string?attribute,?string?value)
????????{
????????????XmlDocument?doc?
=?new?XmlDocument();
????????????doc.Load(xmlPath);
????????????Edit(doc,?xmlPath,?node,?attribute,?value);
????????}

????????
///?<summary>
????????
///?插入一個節點或者屬性
????????
///?</summary>
????????
///?<param?name="node"></param>
????????
///?<param?name="attribute"></param>
????????
///?<param?name="value"></param>
????????
///?<returns></returns>
????????public?XmlHelper?Update(string?node,?string?attribute,?string?value)
????????{
????????????Edit(_doc,?_xmlPath,?node,?attribute,?value);
????????????
return?this;
????????}

????????
private?static?void?Edit(XmlDocument?doc,?string?xmlPath,?string?node,?string?attribute,?string?value)
????????{
????????????XmlNode?xn?
=?GetNode(doc,?node);
????????????XmlElement?xe?
=?(XmlElement)xn;
????????????
if?(String.IsNullOrEmpty(attribute))
????????????{
????????????????xe.InnerText?
=?value;
????????????}
????????????
else
????????????{
????????????????xe.SetAttribute(attribute,?value);
????????????}
????????????doc.Save(xmlPath);
????????}
???????
????????
///?<summary>
????????
///?刪除數據
????????
///?</summary>
????????
///?<param?name="xmlPath">路徑</param>
????????
///?<param?name="node">節點如果是非根節點可使用多層節點表達式:nodelayer1>nodelayer2>nodelayer3</param>
????????
///?<param?name="attribute">屬性名,非空時刪除該節點屬性值,否則刪除節點值</param>
????????
///?<param?name="value"></param>
????????
///?<returns></returns>
????????public?static?void?Remove(string?xmlPath,?string?node,?string?attribute)
????????{
????????????XmlDocument?doc?
=?new?XmlDocument();
????????????doc.Load(xmlPath);
????????????Delete(doc,?xmlPath,?node,?attribute);
????????}

????????
public?XmlHelper?Delete(string?node,?string?attribute)
????????{
????????????Delete(_doc,?_xmlPath,?node,?attribute);
????????????
return?this;
????????}

????????
private?static?void?Delete(XmlDocument?doc,?string?xmlPath,?string?node,?string?attribute)
????????{
????????????XmlNode?xn?
=?GetNode(doc,?node);
????????????XmlElement?xe?
=?(XmlElement)xn;
????????????
if?(String.IsNullOrEmpty(attribute))
????????????{
????????????????xn.ParentNode.RemoveChild(xn);
????????????}
????????????
else
????????????{
????????????????xe.RemoveAttribute(attribute);
????????????}
????????????doc.Save(xmlPath);
????????}
????????
///?<summary>
????????
///?返回節點
????????
///?</summary>
????????
///?<param?name="doc"></param>
????????
///?<param?name="node">節點表達式</param>
????????
///?<returns></returns>
????????private?static?XmlNode?GetNode(XmlDocument?doc,?string?node)
????????{
????????????
if?(String.IsNullOrEmpty(node))
????????????{
????????????????
throw?new?ArgumentNullException("節點不能為空");
????????????}
????????????
string[]?nodelayers?=?node.Split('>');
????????????XmlNode?xn?
=?doc.SelectSingleNode(nodelayers[0]);
????????????
for?(int?i?=?1;?i?<?nodelayers.Length;?i++)
????????????{
????????????????
if?(String.IsNullOrEmpty(nodelayers[i]))
????????????????{
????????????????????
throw?new?ArgumentException(String.Format("第{0}級節點為空",i+1));
????????????????}
????????????????
else
????????????????{
????????????????????xn?
=?xn.SelectSingleNode(nodelayers[i]);
????????????????}
????????????}
????????????
return?xn;
????????}
????}
}

?

?使用示例:

代碼string?_configPath?=?"config.xml";
???????????XmlHelper.Insert(_configPath,?
"configuration","mynode",null,"kk");
?
???????????
string?msg=?new?XmlHelper(_configPath)
???????????????.Insert(
"configuration",?"mynode",?null,?"kk")
???????????????.Update(
"configuration>mynode",?null,?"zhao")
???????????????.Select(
"configuration>mynode",?null);
???????????MessageBox.Show(msg);
???

?

?xml內容

?<?xml?version="1.0"?encoding="utf-8"?>

<configuration>
</configuration>

?

轉載于:https://www.cnblogs.com/luckuny/archive/2011/02/22/1961255.html

總結

以上是生活随笔為你收集整理的仿Jquery链式操作的xml操作类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。