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();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM