xml文档操作类C#

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

    using System;  
    using System.Xml;  
    using System.Configuration;  
    using System.Data;  
    using System.Collections;  
    using System.IO;  
      
    namespace YZControl  
    {  
        public class NewXmlControl : Object  
        {  
            protected string strXmlFile;  
            protected XmlDocument objXmlDoc = new XmlDocument();  
      
      
            public NewXmlControl(string XmlFile,Boolean bOverWrite,string sRoot)  
            {  
                try  
                {  
                    //如果覆盖模式,则强行创建一个xml文档  
                    if (bOverWrite)  
                    {  
                        objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0","utf-8",null));//设置xml的版本,格式信息  
                        objXmlDoc.AppendChild(objXmlDoc.CreateElement("",sRoot,""));//创建根元素  
                        objXmlDoc.Save(XmlFile);//保存  
                    }  
                    else //否则,检查文件是否存在,不存在则创建  
                    {  
                        if (!(File.Exists(XmlFile)))  
                        {  
                            objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0",null));  
                            objXmlDoc.AppendChild(objXmlDoc.CreateElement("",""));  
                            objXmlDoc.Save(XmlFile);  
                        }  
                    }  
                    objXmlDoc.Load(XmlFile);  
                }  
                catch (System.Exception ex)  
                {  
                    throw ex;  
                }  
                strXmlFile = XmlFile;  
            }  
      
      
      
            /// <summary>  
            /// 根据xPath值,返回xPath下的所有下级子结节到一个DataView  
            /// </summary>  
            /// <param name="XmlPathNode">xPath值</param>  
            /// <returns>有数据则返回DataView,否则返回null</returns>  
            public DataView GetData(string XmlPathNode)  
            {  
                //查找数据。返回一个DataView  
                DataSet ds = new DataSet();  
                try  
                {  
                    StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);  
                    ds.ReadXml(read);  
                    return ds.Tables[0].DefaultView;  
                }  
                catch  
                {  
                    //throw;  
                    return null;  
                }  
            }  
      
            /// <summary>  
            /// 更新节点内容  
            /// </summary>  
            /// <param name="xmlPathNode"></param>  
            /// <param name="content"></param>  
            public void UpdateNode(string xmlPathNode,string content)  
            {  
                objXmlDoc.SelectSingleNode(xmlPathNode).InnerText = content;  
            }  
      
            /// <summary>  
            /// 更新节点的某个属性  
            /// </summary>  
            /// <param name="xmlPathNode">要操作的节点</param>  
            /// <param name="AttribName">属性名</param>  
            /// <param name="AttribValue">属性值</param>  
            public void UpdateNode(string xmlPathNode,string AttribName,string AttribValue)  
            {  
      
                ((XmlElement)(objXmlDoc.SelectSingleNode(xmlPathNode))).SetAttribute(AttribName,AttribValue);  
            }  
      
      
            /// <summary>  
            /// 修改节点(同步更新内容属性)  
            /// </summary>  
            /// <param name="xmlPathNode">要操作节点的xpath语句</param>  
            /// <param name="arrAttribName">属性名称字符串数组</param>  
            /// <param name="arrAttribContent">属性内容字符串数组</param>  
            /// <param name="content">节点内容</param>  
            public void UpdateNode(string xmlPathNode,string[] arrAttribName,string[] arrAttribContent,string content)  
            {  
      
                XmlNode xn = objXmlDoc.SelectSingleNode(xmlPathNode);  
                if (xn != null)  
                {  
                    xn.InnerText = content;  
                    xn.Attributes.RemoveAll();  
                    for (int i = 0; i <= arrAttribName.GetUpperBound(0); i++)  
                    {  
                        ((XmlElement)(xn)).SetAttribute(arrAttribName[i],arrAttribContent[i]);  
                    }  
      
                }  
            }  
      
            /// <summary>  
            /// 移除选定节点集的所有属性  
            /// </summary>  
            /// <param name="xmlPathNode"></param>  
            public void RemoveAllAttribute(string xmlPathNode)  
            {  
                XmlNodeList xnl = objXmlDoc.SelectNodes(xmlPathNode);  
                foreach (XmlNode xn in xnl)  
                {  
                    xn.Attributes.RemoveAll();  
                }  
            }  
      
      
            public void DeleteNode(string Node)  
            {  
                //刪除一个节点。  
                try  
                {  
                    string mainNode = Node.Substring(0,Node.LastIndexOf("/"));  
                    objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));  
                }  
                catch  
                {  
                    //throw;     
                    return;  
                }  
            }  
      
      
            public void InsertNodeWithChild(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>  
            /// 插入一个节点,带一个Attribute和innerText  
            /// </summary>  
            /// <param name="mainNode"></param>  
            /// <param name="Element">节点名称</param>  
            /// <param name="Attrib">Attribute名称</param>  
            /// <param name="AttribContent">Attribute值</param>  
            /// <param name="Content">innerText值</param>  
            public void InsertNode(string mainNode,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>  
            /// 插入一个节点,带一个Attribute  
            /// </summary>  
            /// <param name="mainNode"></param>  
            /// <param name="Element">节点名称</param>  
            /// <param name="Attrib">Attribute名称</param>  
            /// <param name="AttribContent">Attribute值</param>     
            public void InsertNode(string mainNode,string AttribContent)  
            {  
                XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);  
                XmlElement objElement = objXmlDoc.CreateElement(Element);  
                objElement.SetAttribute(Attrib,AttribContent);  
                objNode.AppendChild(objElement);  
            }  
      
      
            /// <summary>  
            /// 插入一个节点  
            /// </summary>  
            /// <param name="mainNode"></param>  
            /// <param name="Element">节点名称</param>         
            public void InsertNode(string mainNode,string Element)  
            {  
                XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);  
                XmlElement objElement = objXmlDoc.CreateElement(Element);  
                objNode.AppendChild(objElement);  
            }  
      
      
            //<summary>  
            //插入一个节点,带多个属性和一个inner text  
            //</summary>  
            public void InsertNode(string mainNode,string elementName,string[] arrAttributeName,string[] arrAttributeContent,string elementContent)  
            {  
                try  
                {  
                    XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);  
                    XmlElement objElement = objXmlDoc.CreateElement(elementName);  
                    for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)  
                    {  
                        objElement.SetAttribute(arrAttributeName[i],arrAttributeContent[i]);  
                    }  
                    objElement.InnerText = elementContent;  
                    objNode.AppendChild(objElement);  
                }  
                catch  
                {  
                    throw;  
                    //string t = mainNode;  
                    //;  
                }  
            }  
      
            ///<summary>  
            ///插入一个节点,带多个属性  
            ///</summary>  
            public void InsertNode(string mainNode,string[] arrAttributeContent)  
            {  
                try  
                {  
                    XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);  
                    XmlElement objElement = objXmlDoc.CreateElement(elementName);  
                    for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)  
                    {  
                        objElement.SetAttribute(arrAttributeName[i],arrAttributeContent[i]);  
                    }  
                    //objElement.InnerText = elementContent;  
                    objNode.AppendChild(objElement);  
                }  
                catch  
                {  
                    throw;  
                    //string t = mainNode;  
                    //;  
                }  
            }  
      
            /// <summary>  
            /// 插入子节点(带多个属性)  
            /// </summary>  
            /// <param name="parentNode">要插入的父节点</param>  
            /// <param name="elementName">插入的节点名称</param>  
            /// <param name="arrAttributeName">属性名称[数组]</param>  
            /// <param name="arrAttributeContent">属性内容[数组]</param>  
            /// <param name="elementContent">节点内容</param>  
            public void AddChildNode(string parentNodePath,string elementContent)  
            {  
                try  
                {  
                    XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);  
                    XmlElement objChildElement = objXmlDoc.CreateElement(elementName);  
                    for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)  
                    {  
                        objChildElement.SetAttribute(arrAttributeName[i],arrAttributeContent[i]);  
                    }  
                    objChildElement.InnerText = elementContent;  
                    parentNode.AppendChild(objChildElement);  
                }  
                catch  
                {  
                    return;  
                }  
      
            }  
      
            /// <summary>  
            /// 插入子节点(将内容以CData形式写入)  
            /// </summary>  
            /// <param name="parentNode">要插入的父节点</param>  
            /// <param name="elementName">插入的节点名称</param>  
            /// <param name="elementContent">节点内容</param>  
            public void AddChildNodeCData(string parentNodePath,string elementContent)  
            {  
                try  
                {  
                    XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);  
                    XmlElement objChildElement = objXmlDoc.CreateElement(elementName);  
      
                    //写入cData数据  
                    XmlCDataSection xcds = objXmlDoc.CreateCDataSection(elementContent);  
      
                    objChildElement.AppendChild(xcds);  
                    parentNode.AppendChild(objChildElement);  
                }  
                catch  
                {  
                    return;  
                }  
      
            }  
      
      
            /// <summary>  
            /// 插入子节点(仅内容,不带属性)  
            /// </summary>  
            /// <param name="parentNode">要插入的父节点</param>  
            /// <param name="elementName">插入的节点名称</param>  
            /// <param name="elementContent">节点内容</param>  
            public void AddChildNode(string parentNodePath,string elementContent)  
            {  
                try  
                {  
                    XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);  
                    XmlElement objChildElement = objXmlDoc.CreateElement(elementName);  
      
                    objChildElement.InnerText = elementContent;  
                    parentNode.AppendChild(objChildElement);  
                }  
                catch  
                {  
                    return;  
                }  
      
            }  
      
            /// <summary>  
            /// 根据xpath值查找节点  
            /// </summary>  
            /// <param name="NodePath">要查找节点的xpath值</param>  
            /// <returns>找到返回true,否则返回true</returns>  
            public bool FindNode(string NodePath)  
            {  
                try  
                {  
                    if (objXmlDoc.SelectSingleNode(NodePath) != null)  
                    {  
                        return true;  
                    }  
                    else  
                    {  
                        return false;  
                    }  
                }  
                catch  
                {  
                    return false;  
                }  
            }  
      
      
            /// <summary>  
            ///保存文档  
            /// </summary>  
            public void Save()  
            {  
                //保存文档。  
                try  
                {  
                    objXmlDoc.Save(strXmlFile);  
                }  
                catch (System.Exception ex)  
                {  
                    throw ex;  
                }  
                objXmlDoc = null;  
            }  
      
      
      
      
        }  
    }  
      
    调用方法  
     NewXmlControl xc = new NewXmlControl(Server.MapPath("~/RSS.xml"),true,"RSS");  
                xc.UpdateNode("//RSS","version","2.0");  
                xc.InsertNode("//RSS","channel");  
                xc.AddChildNode("/RSS/channel","title",Shop.DAL.sp_netconfig.GetConfigObj().webname);  
               // xc.AddChildNode("/RSS/channel","slogan",Shop.DAL.sp_netconfig.GetConfigObj().webname);  
                xc.AddChildNode("/RSS/channel","link",Shop.DAL.sp_netconfig.GetConfigObj().weburl);  
                xc.AddChildNode("/RSS/channel","language","zh-cn");  
                xc.AddChildNode("/RSS/channel","description",Shop.DAL.sp_netconfig.GetConfigObj().Metatwo);  
               // xc.AddChildNode("/RSS/channel","copyright",Shop.DAL.sp_netconfig.GetConfigObj().copyright);  
                xc.AddChildNode("/RSS/channel","author","generator","RSS Generator By Taoxian");  
                DataSet ds = DbHelpersql.Query("select top 20 pro_ID,pro_Name,pro_CreateTime,pro_Content from sp_product where pro_SaleType=1 and  pro_Stock>0 and pro_Audit=1 order by pro_ID desc");  
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)  
                {  
                    int j = i + 1;  
                    xc.InsertNode("/RSS/channel","item");  
                    xc.AddChildNode("/RSS/channel/item[" + j.ToString() + "]",ds.Tables[0].Rows[i]["pro_Name"].ToString());  
                    xc.AddChildNode("/RSS/channel/item[" + j.ToString() + "]",Shop.DAL.sp_netconfig.GetConfigObj().weburl + "/Product/ProductInfo_" + ds.Tables[0].Rows[i]["pro_ID"].ToString() + ".html");  
                    xc.AddChildNode("/RSS/channel/item[" + j.ToString() + "]","pubDate",Convert.ToDateTime(ds.Tables[0].Rows[i]["pro_CreateTime"].ToString()).GetDateTimeFormats('r')[0].ToString());                  
                    xc.AddChildNode("/RSS/channel/item[" + j.ToString() + "]",Shop.DAL.sp_netconfig.GetConfigObj().webname);  
                    xc.AddChildNodeCData("/RSS/channel/item[" + j.ToString() + "]",ds.Tables[0].Rows[i]["pro_Content"].ToString());  
                }  
                ds.Dispose();  
                xc.Save();  
                YZControl.staticFunction.FinalMessage("生成RSS成功!","html.aspx",2);   

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString(&quot;x2&quot;));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable&lt;Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include &quot;WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...