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>
 
其他方法类似于以上调用方法 如果有时间会在继续更新其他的方法的操作
如有错误 希望大家批评指出 不甚感激

 


 


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值