C#常用操作类库三(XML操作类)

/// <summary>
        /// XmlHelper 的摘要说明。
        /// xml操作类
        /// </summary>
        public class XmlHelper
        {
            protected string strXmlFile;
            protected XmlDocument objXmlDoc = new XmlDocument();
            public XmlHelper(string XmlFile)
            {
                // 
                // TODO: 在这里加入建构函式的程序代码 
                // 
                try
                {
                    
                    objXmlDoc.Load(XmlFile);
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                strXmlFile = XmlFile;
            }
            public DataTable  GetData(string XmlPathNode)
            {
                //查找数据。返回一个DataView 
                DataSet ds = new DataSet();
                StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
                ds.ReadXml(read);
                return ds.Tables[0];
            }
            /// <summary>
            /// 新节点内容。
            /// 示例:xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp"); 
            /// </summary>
            /// <param name="XmlPathNode"></param>
            /// <param name="Content"></param>
            public void Replace(string XmlPathNode, string Content)
            {
                //更新节点内容。 
                objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
            }
            /// <summary>
            /// 删除一个指定节点的子节点。 
            /// 示例: xmlTool.DeleteChild("Book/Authors[ISBN=\"0003\"]"); 
            /// </summary>
            /// <param name="Node"></param>
            public void DeleteChild(string Node)
            {
                //删除一个节点。 
                string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
                objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
            }
           
            /// <summary>
                      
            ///  * 使用示列:
          ///  示例: XmlHelper.Delete( "/Node", "")
         ///  XmlHelper.Delete( "/Node", "Attribute")
           /// </summary>
            /// <param name="node">节点</param>
            /// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
            public   void Delete(  string node, string attribute)
        {
            try
            {
               
                XmlNode xn = objXmlDoc.SelectSingleNode(node);
                XmlElement xe = (XmlElement)xn;
                if (attribute.Equals(""))
                    xn.ParentNode.RemoveChild(xn);
                else
                    xe.RemoveAttribute(attribute);
               
            }
            catch { }
        }
  
            /// <summary>
            /// 插入一节点和此节点的一子节点。 
            /// 示例:xmlTool.InsertNode("Book","Author","ISBN","0004"); 
            /// </summary>
            /// <param name="MainNode">主节点</param>
            /// <param name="ChildNode">子节点</param>
            /// <param name="Element">元素</param>
            /// <param name="Content">内容</param>
            public void InsertNode(string MainNode, string ChildNode, string Element, string Content)
            {
                //插入一节点和此节点的一子节点。 
                XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
                XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
                objRootNode.AppendChild(objChildNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objElement.InnerText = Content;
                objChildNode.AppendChild(objElement);
            }
            /// <summary>
            /// 插入一个节点,带一属性。
            /// 示例: xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii"); 
            /// </summary>
            /// <param name="MainNode">主节点</param>
            /// <param name="Element">元素</param>
            /// <param name="Attrib">属性</param>
            /// <param name="AttribContent">属性内容</param>
            /// <param name="Content">元素内容</param>
            public void InsertElement(string MainNode, string Element, string Attrib, string AttribContent, string Content)
            {
                //插入一个节点,带一属性。 
                XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objElement.SetAttribute(Attrib, AttribContent);
                objElement.InnerText = Content;
                objNode.AppendChild(objElement);
            }
            /// <summary>
            /// 插入一个节点,不带属性。
            /// 示例:xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa"); 
            /// </summary>
            /// <param name="MainNode">主节点</param>
            /// <param name="Element">元素</param>
            /// <param name="Content">元素内容</param>
            public void InsertElement(string MainNode, string Element, string Content)
            {
                //插入一个节点,不带属性。 
                XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objElement.InnerText = Content;
                objNode.AppendChild(objElement);
            }
            /// <summary>
            /// 对xml文件做插入,更新,删除后需做Save()操作,以保存修改
            /// </summary>
            public void Save()
            {
                //保存文檔。 
                try
                {
                    objXmlDoc.Save(strXmlFile);
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
                objXmlDoc = null;
            }
        }
        //========================================================= 
        //实例应用: 
        //string strXmlFile = Server.MapPath("TestXml.xml"); 
        //XmlControl xmlTool = new XmlControl(strXmlFile); 
        // 数据显视 
        // dgList.DataSource = xmlTool.GetData("Book/Authors[ISBN=\"0002\"]"); 
        // dgList.DataBind(); 
        // 更新元素内容 
        // xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp"); 
        // xmlTool.Save(); 
        // 添加一个新节点 
        // xmlTool.InsertNode("Book","Author","ISBN","0004"); 
        // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa"); 
        // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii"); 
        // xmlTool.Save(); 
        // 删除一个指定节点的所有内容和属性 
        // xmlTool.Delete("Book/Author[ISBN=\"0004\"]"); 
        // xmlTool.Save(); 
        // 删除一个指定节点的子节点 
        // xmlTool.Delete("Book/Authors[ISBN=\"0003\"]"); 
        // xmlTool.Save();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成神之路

Java企业微信开发_05_消息推送之被动回复消息

微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip      ,此包中封装好了AES加解密方法,直接调用方法即可。

36820
来自专栏大大的微笑

java发送邮件功能,以发送qq邮件为例

问题①: java发送qq邮件出现如下错误的解决方法:      503 Error: need EHLO and AUTH first ! pop.put("...

420100
来自专栏JadePeng的技术博客

使用Spring访问Mongodb的方法大全——Spring Data MongoDB查询指南

1.概述 Spring Data MongoDB 是Spring框架访问mongodb的神器,借助它可以非常方便的读写mongo库。本文介绍使用Spring D...

54950
来自专栏用户画像

Spring AOP的三种实现方式

参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.ht...

13310
来自专栏weixuqin 的专栏

spring 学习(四): spring 的 jdbcTemplate 操作

spring 针对 javaee 的每一层,都提供了相应的解决技术,jdbcTemplate 的主要操作在 dao 层。

12420
来自专栏岑玉海

Carbondata源码系列(一)文件生成过程

在滴滴的两年一直在加班,人也变懒了,就很少再写博客了,最近在进行Carbondata和hive集成方面的工作,于是乎需要对Carbondata进行深入的研究。 ...

65660
来自专栏web编程技术分享

【Java框架型项目从入门到装逼】第二节 - Spring框架 AOP的丧心病狂解说,你喜欢露娜的月下无限连吗?据说露娜要重做,玩个屁,劳资退游吃鸡去了,谢谢。

29450
来自专栏跟着阿笨一起玩NET

C#中常用的几种读取XML文件的方法

本文转载:http://www.cnblogs.com/xiaoxiangfeizi/archive/2011/07/29/2120807.html

1.9K10
来自专栏强仔仔

SpringBoot中Redis的set、map、list、value、实体类等基本操作介绍

今天给大家介绍一下SpringBoot中Redis的set、map、list、value等基本操作的具体使用方法 上一节中给大家介绍了如何在SpringBoot...

73080
来自专栏公众号_薛勤的博客

Java发送Email邮件及SpringBoot集成

9820

扫码关注云+社区

领取腾讯云代金券