zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    Web自动化测试之滑动验证码的解决方案
    设计模式之单例
    设计模式之原型
    设计模式之建造者
    DG环境RMAN删除归档报错RMAN-08137: archived log not deleted【转载】
    RFS[3]: No standby redo logfiles available for thread 1
    spring-boot之webflux简单入门
    spring-boot-security组件总结补充
    spring-boot启用security组件 · 下
    spring-boot启用security组件 · 中
  • 原文地址:https://www.cnblogs.com/joean/p/4985289.html
Copyright © 2011-2022 走看看