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

简介:   ///         /// XmlHelper 的摘要说明。        /// xml操作类        ///         public class XmlHelper        {            protected string strXmlFile;     ...
   ///   <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();
目录
相关文章
|
1月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
2月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
81 2
|
2月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
180 61
C# 中的 XML 与 JSON 数据处理
|
1月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
13 0
|
1月前
|
XML 存储 缓存
C#使用XML文件的详解及示例
C#使用XML文件的详解及示例
96 0
|
1月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
383 0
|
1月前
|
C#
Delphi可不可以制作出像c#那样的dll类库?
在Delphi中,创建DLL项目(如dll.dpr)并定义一个类TMyCls后,在另一个项目(如test.dpr)中可以引入此DLL并直接实例化和调用类的方法。然而,Delphi目前主要支持两种DLL形式:动态链接库(需显式声明exports,仅支持函数调用)和ActiveX DLL(需定义IDL接口)。这两种方式都较为繁琐。相比之下,C# 的DLL类库更为便捷,编写并编译后即可在其他项目中直接使用。
|
2月前
|
C# 数据安全/隐私保护
C# 一分钟浅谈:类与对象的概念理解
【9月更文挑战第2天】本文从零开始详细介绍了C#中的类与对象概念。类作为一种自定义数据类型,定义了对象的属性和方法;对象则是类的实例,拥有独立的状态。通过具体代码示例,如定义 `Person` 类及其实例化过程,帮助读者更好地理解和应用这两个核心概念。此外,还总结了常见的问题及解决方法,为编写高质量的面向对象程序奠定基础。
27 2
|
3月前
|
C#
C#中的类和继承
C#中的类和继承
44 6
|
3月前
|
Java C# 索引
C# 面向对象编程(一)——类
C# 面向对象编程(一)——类
35 0
下一篇
无影云桌面