最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#操作xml幫助類分享(xml增刪改查)

 更新時間:2014年01月06日 14:11:11   作者:  
c#操作xml幫助類XMLHelper源碼分享,實現(xiàn)對XML文檔的創(chuàng)建,及節(jié)點和屬性的增、刪、改、查

復(fù)制代碼 代碼如下:

using System;
using System.Collections;
using System.Xml;

namespace Jb51.Com.XmlDAL
{
public class XmlHelper
{
#region 公共變量
XmlDocument xmldoc;
XmlNode xmlnode;
XmlElement xmlelem;
#endregion

#region 創(chuàng)建Xml文檔
/// <summary>
/// 創(chuàng)建一個帶有根節(jié)點的Xml文件
/// </summary>
/// <param name="FileName">Xml文件名稱</param>
/// <param name="rootName">根節(jié)點名稱</param>
/// <param name="Encode">編碼方式:gb2312,UTF-8等常見的</param>
/// <param name="DirPath">保存的目錄路徑</param>
/// <returns></returns>
public bool CreateXmlDocument(string FileName, string RootName, string Encode)
{
try
{
xmldoc = new XmlDocument();
XmlDeclaration xmldecl;
xmldecl = xmldoc.CreateXmlDeclaration("1.0", Encode,null);
xmldoc.AppendChild(xmldecl);
xmlelem = xmldoc.CreateElement("", RootName, "");
xmldoc.AppendChild(xmlelem);
xmldoc.Save(FileName);
return true;
}
catch (Exception e)
{
return false;
throw new Exception(e.Message);
}
}

#endregion

#region 常用操作方法(增刪改)
/// <summary>
/// 插入一個節(jié)點和它的若干子節(jié)點
/// </summary>
/// <param name="XmlFile">Xml文件路徑</param>
/// <param name="NewNodeName">插入的節(jié)點名稱</param>
/// <param name="HasAttributes">此節(jié)點是否具有屬性,True為有,F(xiàn)alse為無</param>
/// <param name="fatherNode">此插入節(jié)點的父節(jié)點,要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名)</param>
/// <param name="htAtt">此節(jié)點的屬性,Key為屬性名,Value為屬性值</param>
/// <param name="htSubNode">子節(jié)點的屬性,Key為Name,Value為InnerText</param>
/// <returns>返回真為更新成功,否則失敗</returns>
public bool InsertNode(string XmlFile, string NewNodeName, bool HasAttributes, string fatherNode, Hashtable htAtt, Hashtable htSubNode)
{
try
{
xmldoc = new XmlDocument();
xmldoc.Load(XmlFile);
XmlNode root = xmldoc.SelectSingleNode(fatherNode);
xmlelem = xmldoc.CreateElement(NewNodeName);
if (htAtt != null && HasAttributes)//若此節(jié)點有屬性,則先添加屬性
{
SetAttributes(xmlelem, htAtt);
SetNodes(xmlelem.Name, xmldoc, xmlelem, htSubNode);//添加完此節(jié)點屬性后,再添加它的子節(jié)點和它們的InnerText
}
else
{
SetNodes(xmlelem.Name, xmldoc, xmlelem, htSubNode);//若此節(jié)點無屬性,那么直接添加它的子節(jié)點
}

root.AppendChild(xmlelem);
xmldoc.Save(XmlFile);

return true;
}
catch (Exception e)
{

throw new Exception(e.Message);

}
}
/// <summary>
/// 更新節(jié)點
/// </summary>
/// <param name="XmlFile">Xml文件路徑</param>
/// <param name="fatherNode">需要更新節(jié)點的上級節(jié)點,要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名)</param>
/// <param name="htAtt">需要更新的屬性表,Key代表需要更新的屬性,Value代表更新后的值</param>
/// <param name="htSubNode">需要更新的子節(jié)點的屬性表,Key代表需要更新的子節(jié)點名字Name,Value代表更新后的值InnerText</param>
/// <returns>返回真為更新成功,否則失敗</returns>
public bool UpdateNode(string XmlFile, string fatherNode, Hashtable htAtt, Hashtable htSubNode)
{
try
{
xmldoc = new XmlDocument();
xmldoc.Load(XmlFile);
XmlNodeList root = xmldoc.SelectSingleNode(fatherNode).ChildNodes;
UpdateNodes(root, htAtt, htSubNode);
xmldoc.Save(XmlFile);
return true;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}

/// <summary>
/// 刪除指定節(jié)點下的子節(jié)點
/// </summary>
/// <param name="XmlFile">Xml文件路徑</param>
/// <param name="fatherNode">制定節(jié)點,要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名)</param>
/// <returns>返回真為更新成功,否則失敗</returns>
public bool DeleteNodes(string XmlFile, string fatherNode)
{
try
{
xmldoc = new XmlDocument();
xmldoc.Load(XmlFile);
xmlnode = xmldoc.SelectSingleNode(fatherNode);
xmlnode.RemoveAll();
xmldoc.Save(XmlFile);
return true;
}
catch (XmlException xe)
{
throw new XmlException(xe.Message);
}
}

/// <summary>
/// 刪除匹配XPath表達(dá)式的第一個節(jié)點(節(jié)點中的子元素同時會被刪除)
/// </summary>
/// <param name="xmlFileName">XML文檔完全文件名(包含物理路徑)</param>
/// <param name="xpath">要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名</param>
/// <returns>成功返回true,失敗返回false</returns>
public bool DeleteXmlNodeByXPath(string xmlFileName, string xpath)
{
bool isSuccess = false;
xmldoc = new XmlDocument();
try
{
xmldoc.Load(xmlFileName); //加載XML文檔
XmlNode xmlNode = xmldoc.SelectSingleNode(xpath);
if (xmlNode != null)
{
//刪除節(jié)點
xmldoc.ParentNode.RemoveChild(xmlNode);
}
xmldoc.Save(xmlFileName); //保存到XML文檔
isSuccess = true;
}
catch (Exception ex)
{
throw ex; //這里可以定義你自己的異常處理
}
return isSuccess;
}

/// <summary>
/// 刪除匹配XPath表達(dá)式的第一個節(jié)點中的匹配參數(shù)xmlAttributeName的屬性
/// </summary>
/// <param name="xmlFileName">XML文檔完全文件名(包含物理路徑)</param>
/// <param name="xpath">要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名</param>
/// <param name="xmlAttributeName">要刪除的xmlAttributeName的屬性名稱</param>
/// <returns>成功返回true,失敗返回false</returns>
public bool DeleteXmlAttributeByXPath(string xmlFileName, string xpath, string xmlAttributeName)
{
bool isSuccess = false;
bool isExistsAttribute = false;
xmldoc = new XmlDocument();
try
{
xmldoc.Load(xmlFileName); //加載XML文檔
XmlNode xmlNode = xmldoc.SelectSingleNode(xpath);
XmlAttribute xmlAttribute = null;
if (xmlNode != null)
{
//遍歷xpath節(jié)點中的所有屬性
foreach (XmlAttribute attribute in xmlNode.Attributes)
{
if (attribute.Name.ToLower() == xmlAttributeName.ToLower())
{
//節(jié)點中存在此屬性
xmlAttribute = attribute;
isExistsAttribute = true;
break;
}
}
if (isExistsAttribute)
{
//刪除節(jié)點中的屬性
xmlNode.Attributes.Remove(xmlAttribute);
}
}
xmldoc.Save(xmlFileName); //保存到XML文檔
isSuccess = true;
}
catch (Exception ex)
{
throw ex; //這里可以定義你自己的異常處理
}
return isSuccess;
}

/*柯樂義*/
/// <summary>
/// 刪除匹配XPath表達(dá)式的第一個節(jié)點中的所有屬性
/// </summary>
/// <param name="xmlFileName">XML文檔完全文件名(包含物理路徑)</param>
/// <param name="xpath">要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名</param>
/// <returns>成功返回true,失敗返回false</returns>
public bool DeleteAllXmlAttributeByXPath(string xmlFileName, string xpath)
{
bool isSuccess = false;
xmldoc = new XmlDocument();
try
{
xmldoc.Load(xmlFileName); //加載XML文檔
XmlNode xmlNode = xmldoc.SelectSingleNode(xpath);
if (xmlNode != null)
{
//遍歷xpath節(jié)點中的所有屬性
xmlNode.Attributes.RemoveAll();
}
xmldoc.Save(xmlFileName); //保存到XML文檔
isSuccess = true;
}
catch (Exception ex)
{
throw ex; //這里可以定義你自己的異常處理
}
return isSuccess;
}
#endregion

#region 私有方法
/// <summary>
/// 設(shè)置節(jié)點屬性
/// </summary>
/// <param name="xe">節(jié)點所處的Element</param>
/// <param name="htAttribute">節(jié)點屬性,Key代表屬性名稱,Value代表屬性值</param>
private void SetAttributes(XmlElement xe, Hashtable htAttribute)
{
foreach (DictionaryEntry de in htAttribute)
{
xe.SetAttribute(de.Key.ToString(), de.Value.ToString());
}
}
/// <summary>
/// 增加子節(jié)點到根節(jié)點下
/// </summary>
/// <param name="rootNode">上級節(jié)點名稱</param>
/// <param name="XmlDoc">Xml文檔</param>
/// <param name="rootXe">父根節(jié)點所屬的Element</param>
/// <param name="SubNodes">子節(jié)點屬性,Key為Name值,Value為InnerText值</param>
private void SetNodes(string rootNode, XmlDocument XmlDoc, XmlElement rootXe, Hashtable SubNodes)
{
if (SubNodes == null)
return;
foreach (DictionaryEntry de in SubNodes)
{
xmlnode = XmlDoc.SelectSingleNode(rootNode);
XmlElement subNode = XmlDoc.CreateElement(de.Key.ToString());
subNode.InnerText = de.Value.ToString();
rootXe.AppendChild(subNode);
}
}
/// <summary>
/// 更新節(jié)點屬性和子節(jié)點InnerText值???樂 義
/// </summary>
/// <param name="root">根節(jié)點名字</param>
/// <param name="htAtt">需要更改的屬性名稱和值</param>
/// <param name="htSubNode">需要更改InnerText的子節(jié)點名字和值</param>
private void UpdateNodes(XmlNodeList root, Hashtable htAtt, Hashtable htSubNode)
{
foreach (XmlNode xn in root)
{
xmlelem = (XmlElement)xn;
if (xmlelem.HasAttributes)//如果節(jié)點如屬性,則先更改它的屬性
{
foreach (DictionaryEntry de in htAtt)//遍歷屬性哈希表
{
if (xmlelem.HasAttribute(de.Key.ToString()))//如果節(jié)點有需要更改的屬性
{
xmlelem.SetAttribute(de.Key.ToString(), de.Value.ToString());//則把哈希表中相應(yīng)的值Value賦給此屬性Key
}
}
}
if (xmlelem.HasChildNodes)//如果有子節(jié)點,則修改其子節(jié)點的InnerText
{
XmlNodeList xnl = xmlelem.ChildNodes;
foreach (XmlNode xn1 in xnl)
{
XmlElement xe = (XmlElement)xn1;
foreach (DictionaryEntry de in htSubNode)
{
if (xe.Name == de.Key.ToString())//htSubNode中的key存儲了需要更改的節(jié)點名稱,
{
xe.InnerText = de.Value.ToString();//htSubNode中的Value存儲了Key節(jié)點更新后的數(shù)據(jù)
}
}
}
}

}
}
#endregion
#region XML文檔節(jié)點查詢和讀取
/// <summary>
/// 選擇匹配XPath表達(dá)式的第一個節(jié)點XmlNode.
/// </summary>
/// <param name="xmlFileName">XML文檔完全文件名(包含物理路徑)</param>
/// <param name="xpath">要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名")</param>
/// <returns>返回XmlNode</returns>
public XmlNode GetXmlNodeByXpath(string xmlFileName, string xpath)
{
xmldoc = new XmlDocument();
try
{
xmldoc.Load(xmlFileName); //加載XML文檔
XmlNode xmlNode = xmldoc.SelectSingleNode(xpath);
return xmlNode;
}
catch (Exception ex)
{
return null;
//throw ex; //這里可以定義你自己的異常處理
}
}

/// <summary>
/// 選擇匹配XPath表達(dá)式的節(jié)點列表XmlNodeList.
/// </summary>
/// <param name="xmlFileName">XML文檔完全文件名(包含物理路徑)</param>
/// <param name="xpath">要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名")</param>
/// <returns>返回XmlNodeList</returns>
public XmlNodeList GetXmlNodeListByXpath(string xmlFileName, string xpath)
{
xmldoc = new XmlDocument();
try
{
xmldoc.Load(xmlFileName); //加載XML文檔
XmlNodeList xmlNodeList = xmldoc.SelectNodes(xpath);
return xmlNodeList;
}
catch (Exception ex)
{
return null;
//throw ex; //這里可以定義你自己的異常處理
}
}

/// <summary>
/// 選擇匹配XPath表達(dá)式的第一個節(jié)點的匹配xmlAttributeName的屬性XmlAttribute. 柯樂義
/// </summary>
/// <param name="xmlFileName">XML文檔完全文件名(包含物理路徑)</param>
/// <param name="xpath">要匹配的XPath表達(dá)式(例如:"http://節(jié)點名//子節(jié)點名</param>
/// <param name="xmlAttributeName">要匹配xmlAttributeName的屬性名稱</param>
/// <returns>返回xmlAttributeName</returns>
public XmlAttribute GetXmlAttribute(string xmlFileName, string xpath, string xmlAttributeName)
{
string content = string.Empty;
xmldoc = new XmlDocument();
XmlAttribute xmlAttribute = null;
try
{
xmldoc.Load(xmlFileName); //加載XML文檔
XmlNode xmlNode = xmldoc.SelectSingleNode(xpath);
if (xmlNode != null)
{
if (xmlNode.Attributes.Count > 0)
{
xmlAttribute = xmlNode.Attributes[xmlAttributeName];
}
}
}
catch (Exception ex)
{
throw ex; //這里可以定義你自己的異常處理
}
return xmlAttribute;
}
#endregion
}
}

這個類怎么使用呢?下面給出一個創(chuàng)建xml文檔的例子:

復(fù)制代碼 代碼如下:

XmlHelper m_menu_keleyi_com = new XmlHelper();
m_menu_keleyi_com.CreateXmlDocument(@"D:\kel"+"eyimenu.xml", "ke"+"leyimenu", "utf-8");

這短代碼在D盤創(chuàng)建了一個名為keleyimenu.xml的文檔,文檔有根節(jié)點keleyimenu,文檔的內(nèi)容為:

復(fù)制代碼 代碼如下:

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

 

相關(guān)文章

  • Unity3D實現(xiàn)播放gif圖功能

    Unity3D實現(xiàn)播放gif圖功能

    這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)播放gif圖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C# 數(shù)據(jù)驗證Regex示例詳解

    C# 數(shù)據(jù)驗證Regex示例詳解

    文章介紹了C#中使用Regex進(jìn)行數(shù)據(jù)驗證的方法,包括整數(shù)和小數(shù)的正負(fù)驗證,以及郵箱和身份證號的格式驗證,感興趣的朋友一起看看吧
    2025-02-02
  • C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例

    C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例

    這篇文章主要介紹了C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能,涉及C# json格式數(shù)據(jù)的構(gòu)造、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • c#委托把方法當(dāng)成參數(shù)(實例講解)

    c#委托把方法當(dāng)成參數(shù)(實例講解)

    本篇文章主要是對c#委托把方法當(dāng)成參數(shù)的實例代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • Unity shader實現(xiàn)百葉窗特效

    Unity shader實現(xiàn)百葉窗特效

    這篇文章主要為大家詳細(xì)介紹了Unity shader實現(xiàn)百葉窗特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C# 使用Word模板導(dǎo)出數(shù)據(jù)的實現(xiàn)代碼

    C# 使用Word模板導(dǎo)出數(shù)據(jù)的實現(xiàn)代碼

    最近接到個需求,使用word模板導(dǎo)出數(shù)據(jù),怎么實現(xiàn)這個需求呢,今天小編通過實例代碼給大家介紹C# 使用Word模板導(dǎo)出數(shù)據(jù)的方法,感興趣的朋友一起看看吧
    2021-06-06
  • C#異步下載文件

    C#異步下載文件

    這篇文章主要介紹了C#異步下載文件的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • C#使用非托管代碼直接修改字符串的方法

    C#使用非托管代碼直接修改字符串的方法

    在string方法中,如ToUpper等字符串操作方法,都會產(chǎn)生一個新的字符串,這樣增大了運行開支。一個替代方案是通過非托管代碼直接操作字符串。如替代ToUpper方法:
    2013-07-07
  • C#基于Socket實現(xiàn)多人聊天功能

    C#基于Socket實現(xiàn)多人聊天功能

    這篇文章主要為大家詳細(xì)介紹了C#基于Socket實現(xiàn)多人聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#集合之不變集合的用法

    C#集合之不變集合的用法

    這篇文章介紹了C#集合之不變集合的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04

最新評論

曲周县| 朝阳市| 昌图县| 罗平县| 军事| 青州市| 莎车县| 依兰县| 东乡县| 云梦县| 周宁县| 大英县| 长武县| 芦山县| 遂平县| 浙江省| 河南省| 喜德县| 乃东县| 仁寿县| 无棣县| 长海县| 星座| 桃江县| 政和县| 屏边| 开江县| 龙门县| 会东县| 郯城县| 镇安县| 西华县| 长阳| 海口市| 肃宁县| 长岛县| 雷山县| 新昌县| 炎陵县| 双鸭山市| 河东区|