• 简单的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();
  • 相关阅读:
    vue封装一些常用组件loading、switch、progress
    个人推荐的两款vue导出EXCEL插件
    解决react项目中跨域和axios封装使用
    vue仿阿里云后台管理(附加阿里巴巴图标使用)
    简单的利用nginx部署前端项目
    Python3 SMTP发送邮件
    WINDOWS和UNIX换行符的理解
    Forward Proxy vs Reverse Proxy
    Authentication token is no longer valid
    SNMP Introduction
  • 原文地址:https://www.cnblogs.com/baofengyu/p/5976038.html
Copyright © 2020-2023  润新知