c#學習之-xml操作類XmlHelper
該操作類主要使用XmlDocument方法操作類
<p>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;</p><p>namespace SSM.Common
{
public class XmlHelper
{
#region 對節點操作
/// <summary>
/// 增加一個新節點
/// </summary>
/// <param name="filePath">xml文件名</param>
/// <param name="xPath"></param>
/// <param name="xmlNode">新增加的節點</param>
/// <returns></returns>
public static bool AppendChild(string filePath, string xPath, XmlNode xmlNode)
{
try
{
XmlDocument xmldoc = new XmlDocument();//實例化一個xml文件類
xmldoc.Load(filePath);//從xPath路徑中加載一個xml文件
XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找匹配第一個xml節點
XmlNode n = xmldoc.ImportNode(xmlNode, true);//把節點導入新節點
xn.AppendChild(n);
xmldoc.Save(filePath);
}
catch (Exception)
{
return false;
}
return true;
}
/// <summary>
/// 刪除指定節點下所有的子節點
/// </summary>
/// <param name="filePath"></param>
/// <param name="xPath"></param>
/// <returns></returns>
public static bool DeleteAllChild(string filePath, string xPath)
{
try
{
XmlDocument xmldoc = new XmlDocument();//實例化一個xml文件類
XmlElement root = xmldoc.DocumentElement;
xmldoc.Load(filePath);//從xPath路徑中加載一個xml文件
XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找匹配第一個xml節點
xn.RemoveAll();
xmldoc.Save(filePath);
}
catch (Exception)
{</p><p> return false;
}
return true;
}
/// <summary>
/// 移除指定節點的子節點
/// </summary>
/// <param name="filePath">xml文件名</param>
/// <param name="xPath">被刪除節點的父節點xPath路徑</param>
/// <param name="xPathChi">被刪除節點的的xPath路徑</param>
/// <returns></returns>
public static bool DeleteChild(string filePath, string xPath, string xPathChi)
{
try
{
XmlDocument xmldoc = new XmlDocument();//實例化一個xml文件類
XmlElement root = xmldoc.DocumentElement;
xmldoc.Load(filePath);//從xPath路徑中加載一個xml文件
XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找匹配第一個xml節點
XmlNode n = xmldoc.SelectSingleNode(xPathChi);//查找匹配xml子節點
xn.RemoveChild(n);
xmldoc.Save(filePath);
}
catch (Exception)
{</p><p> return false;
}
return true;
}
#endregion
/// <summary>
/// 獲取指定路徑節點中所有子節點的值
/// </summary>
/// <param name="filePath"></param>
/// <param name="xPath"></param>
/// <returns></returns>
public static List<string> GetListValues(string filePath, string xPath)
{ List<string> list = new List<string>();
try
{
XmlDocument xmldoc = new XmlDocument();//實例化一個xml文件類
xmldoc.Load(filePath);
XmlNode xn = xmldoc.SelectSingleNode(xPath);
XmlElement newNode = (XmlElement)xn;//要讀取的節點轉換爲元素
foreach (XmlNode tempNode in newNode)
{
XmlNode Node = tempNode.ChildNodes[0];
string nodeName = Node.InnerText;//取子節點的值
string u = nodeName;
list.Add(u);
}
}
catch (Exception)
{</p><p> return null;
}
return list;
}
/// <summary>
/// 獲取指定節點的指定屬性
/// </summary>
/// <param name="filePath"></param>
/// <param name="xPath"></param>
/// <param name="attName">屬性集合</param>
/// <returns></returns>
public static List<string> GetListAttribute(string filePath, string xPath,params string[] attName)
{
List<string> list = new List<string>();
try
{
XmlDocument xmldoc = new XmlDocument();//實例化一個xml文件類
xmldoc.Load(filePath);
XmlNode xn = xmldoc.SelectSingleNode(xPath);
XmlElement newNode = (XmlElement)xn;//要讀取的節點轉換爲元素
for (int i = 0; i < attName.Length; i++)
{
string stratt = newNode.GetAttribute(attName[i]);
list.Add(stratt);
}
}
catch (Exception)
{
return null;
}
return list;
}
/// <summary>
/// 給節點增加(修改)屬性
/// </summary>
/// <param name="filePath"></param>
/// <param name="xPath"></param>
/// <param name="attName">string</param>
/// <param name="attValue">string</param>
/// <returns></returns>
public static bool UpdateAttribute(string filePath, string xPath,string attName, string attValue)
{
try
{
XmlDocument xmldoc = new XmlDocument();//實例化xml文件
xmldoc.Load(filePath);//根據路徑加載xml文件
XmlNode xn = xmldoc.SelectSingleNode(xPath);//查找一個xml節點
XmlAttribute xa = xmldoc.CreateAttribute(attName);
xa.InnerText = attValue;
xn.Attributes.Append(xa);
xmldoc.Save(filePath);
}
catch (Exception)
{</p><p> return false;
}
return true;
}
/// <summary>
/// 刪除指定名稱的屬性
/// </summary>
/// <param name="filePath"></param>
/// <param name="attName">節點名稱</param>
/// <returns></returns>
public static bool DeleteAttribute(string filePath,string attName)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlElement root = doc.DocumentElement;//獲取根節點
XmlNodeList nodelist = root.ChildNodes;//獲取所有節點列表
XmlNode node = null;
foreach (XmlNode tempNode in nodelist)
{
if (tempNode.NodeType == XmlNodeType.Element)
{
if (tempNode.ChildNodes[0].InnerText == attName)
{
node = tempNode;
break;
}
}
}
if (node != null)
{
root.RemoveChild(node);
doc.Save(filePath);
}
}
catch (Exception)
{</p><p> return false;
}
return true;
}
/// <summary>
/// 更新(增加 修改)節點內容
/// </summary>
/// <param name="filePath"></param>
/// <param name="xPath"></param>
/// <param name="value"></param>
/// <returns></returns>
public static bool UpateNodeInnerText(string filePath, string xPath, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNode xn = doc.SelectSingleNode(xPath);//根據路徑選擇節點
XmlElement xe = (XmlElement)xn;
xe.InnerText = value;
doc.Save(filePath);
}
catch (Exception)
{</p><p> return false;
}
return true;
}
}
}</p>
對於該類的使用 可以根據註釋中的參數介紹使用
下面簡單的舉例使用一下 對於xPath的學習 本文不討論 文中xPath的使用 僅爲說明XMLHelper的使用舉例
xml文件
<?xml version="1.0" encoding="utf-8" ?>
<root>
</root>
調用方法
<pre class="csharp" name="code"> XmlDocument xml = new XmlDocument();
XmlElement elem = xml.CreateElement("tset");
XmlHelper.AppendChild("xmltest0606.xml","//root",elem );
執行結果
<root>
<tset />
</root>
調用方法
<pre class="csharp" name="code"> XmlDocument xml = new XmlDocument();
//新增一個測試節點
XmlElement elem = xml.CreateElement("user1");
XmlHelper.AppendChild("xmltest0606.xml","//root",elem );
//在測試節點下新增name節點
XmlElement elemname = xml.CreateElement("name");
XmlHelper.AppendChild("xmltest0606.xml", "//user1", elemname);
//在測試節點下新增age節點
XmlElement elemage = xml.CreateElement("age");
XmlHelper.AppendChild("xmltest0606.xml", "//user1", elemage);
//對節點賦值
XmlHelper.UpateNodeInnerText("xmltest0606.xml", "//name", "Jack");
XmlHelper.UpateNodeInnerText("xmltest0606.xml", "//age", "29");
執行結果
<pre class="html" name="code"><root>
<tset />
<user1>
<name>Jack</name>
<age>29</age>
</user1>
</root>
調用方法
<pre class="csharp" name="code"> XmlHelper.UpdateAttribute("xmltest0606.xml", "//user1", "id", "1001");
執行結果
<root>
<tset />
<user1 id="1001">
<name>Jack</name>
<age>29</age>
</user1>
</root>
其他方法類似於以上調用方法 如果有時間會在繼續更新其他的方法的操作
如有錯誤 希望大家批評指出 不甚感激