zoukankan
html css js c++ java
一直用在项目里操作XML的类
一直用在项目里操作XML的类 NewXmlControl.cs
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", "utf-8", null)); objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, "")); 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 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> /// 插入一个节点,带一个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 Element, string Attrib, 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 elementName, string[] arrAttributeName, 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 elementName, string[] arrAttributeName, string[] arrAttributeContent, 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 elementName, 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 elementName, 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", Shop.DAL.sp_netconfig.GetConfigObj().webname); xc.AddChildNode("/rss/channel", "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() + "]", "title", ds.Tables[0].Rows[i]["pro_Name"].ToString()); xc.AddChildNode("/rss/channel/item[" + j.ToString() + "]", "link", 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() + "]", "author", Shop.DAL.sp_netconfig.GetConfigObj().webname); xc.AddChildNodeCData("/rss/channel/item[" + j.ToString() + "]", "description", ds.Tables[0].Rows[i]["pro_Content"].ToString()); } ds.Dispose(); xc.Save(); YZControl.staticFunction.FinalMessage("生成RSS成功!", "html.aspx", 0, 2);
作者:
灵雨飘零
出处:
http://www.cnblogs.com/kingboy2008/
本文版权归作者和博客园、CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-
博客园—灵雨飘零
和
CSDN—灵雨飘零
。
查看全文
相关阅读:
移动硬盘文件被恶意隐藏
asp.net identity UserSecurityStamp 的作用
Head First Python学习笔记1
WPF 确认动态加载数据完成
rust by example 2
Rust by Example1
奇葩!把类型转成object
Lambda高手之路第一部分
理解Lambda表达式
贪心算法-找零钱(C#实现)
原文地址:https://www.cnblogs.com/kingboy2008/p/2226413.html
最新文章
wpf Listbox 实现按住ctrl键来取消选中
wpf 的依赖属性只能在loaded 事件之后才能取到
c# 将一个长耗时任务改成task
WPF 的Listbox 滚动处理
动动 隐私声明
多彩拼图 隐私声明
儿童七彩浏览器 隐私声明
JS 清空table
wpf ,只能窗口调整高度,并且设定最小值。
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之三统一返回数据
热门文章
C#之项目常用方法之静态扩展
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之二autofac解耦
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之一骨架
如何在C#/.NET Core中使用责任链模式
.net 中context、DbContext是什么?
JavaScript实现全屏与退出全屏功能
5分钟利用一首诗记住23中设计模式
asp.net core identity 配置cookie
Abp aspnet-core项目部署到Centos7.2
Abp aspnet-core项目部署到Centos7.2全流程攻略
Copyright © 2011-2022 走看看