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