• 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();
  • 相关阅读:
    2018 eclipse安装反编译插件
    Buffer flip()方法
    区块链2
    Mist 转移默认区块存储位置方法
    区块链1
    如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!
    eclipse 性能调优之内存分配
    linux中搭建java开发环境
    在 Ubuntu 14.04 上安装 Ubuntu Tweak 0.8.8
    Ubuntu各个版本的介绍
  • 原文地址:https://www.cnblogs.com/51net/p/2420233.html
Copyright © 2020-2023  润新知