c#學習之-xml操作類XmlHelper

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>
 
其他方法類似於以上調用方法 如果有時間會在繼續更新其他的方法的操作
如有錯誤 希望大家批評指出 不甚感激



 


 

發佈了38 篇原創文章 · 獲贊 13 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章