我的好朋友心电图机兄弟姐妹都用的国产机!华为!oppo!魅族!联想!酷派等全国产机!都非常支持国产机!国产

博客访问: 4633946
博文数量: 3420
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
看到这标题的朋友可能搞不懂到底在搞什么,不过不要紧有兴趣的朋友可以先了解一下IVsSingleFileGenerator到底是用来做什么用的;在vs.net里提供一个IVsSingleFileGenerator接口可以方便地为项目文件生成附属文件,如刚才那文章提到的根据XML文件自动生成一个附属的C#代码文件;当然这个IVsSingleFileGenerator并不只是针对XML文件,可以是随便为任何项目文件生成附属文件你只要在文件属性中设置相关Custom&Tools就可以了.
&&&&&&为什么在这里我提出在代码文件的基础上再生相关的代码附属文件呢,为什么不直接在原代码文件写完整就可以了;原因很简单因为手写代码是没有电脑来得快,最主要一个原因是基于XML的IVsSingleFileGenerator在某方面不好所以才采用基于代码文件的方式作为代码描述模板.用XML描述在现情况碰到的问题,在我的数据持久层里是采用XML结合IVsSingleFileGenerator来生成相关实体类的.
内容大概如下:
VsSingleFileGenerator会根据XML生成以下相关实体:
VsSingleFileGenerator有个不好的地方就是当主文件修改后会重新生成附属文件,这样就导致你无法修改代码文件.如果想为某些属性成员添加Attribute来处理一些功能基本是没办法的.
如添加成员数据验证:
即使能解决VsSingleFileGenerator生成附属文件冲突问题;但也要面对另一个问题,就如何扩展XML来处理这些扩展呢,添加XMLSchema扩展描述规则,重写VsSingleFileGenerator代码生成部份;这样下来没多久我估计自己会疯了....
实际情况添加不同Attribute来扩展辅助功能是很常见的事情,就一个验证来说根据实际情况就有很多情况,类构造方式也不一样.就针对这些情况来扩展XMLSchema和重写VsSingleFileGenerator带来的工作量就不用说了,还有一个问题就是XML并不能提供类型编译的保证这样对XML的质量是很难保证.
经过了一段时间的思考发现为什么不直接用代码作为原模板呢,这样就能得到IDE的支持,强在编译器的支持下保证类型输入规则的有效性.以下是本人实现的简单生成模型:
生成的相关代码
这样的话即使我们如何给属性添加Attribute都不会带来代码上的修改,VsSingleFileGenerator只对属性作一个模板生成其他内容搬过来就可以了:)
阅读(400) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。&&&&C# XML文件对象增删改操作项目示例
&C# XML文件对象增删改操作项目示例
C# XML文件对象增删改操作项目示例,经测试可以将对象节点完全删除。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
C# XML文件对象增删改操作项目示例
所需积分:2
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
C# XML文件对象增删改操作项目示例
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员西西软件下载最安全的下载网站、值得信赖的软件下载站!
→ C#中怎么去用XML实例
类型:下载工具大小:828KB语言:中文 评分:7.5
在学习XML之前我们先想一下,在之前我们见过这个东西么?主要作用是做数据的存储,而HTML是做数据的展现.当我们用存储的时候的优点是,安全度高,查询方便.缺点就是数据量小的时候,用数据库有点杀鸡用牛刀的感觉.而且数据库这种存储方式必须依赖某个软件才能查看.用文本文件的优点是,快速,方便.缺点就是:不安全.设计格式不太方便.XML是个文本文件,任何操作系统都能识别,能把我们要的数据结构化的存储起来.的文件格式docx、xlsx、pptx都是xml,先改成rar文件然后解压。XML和HTML的区别:XML有且只能有一个根元素XML严格区分大小写―如果是大写就全是大写,如果是小写就全是小写XML中的属性都必须用引号引起来(推荐:双引号)元素有开始,必须有结束.& & & & & & & & & & & &一、XML和HTML的区别演示代码HTML有一些预定义的标签,而XML则没有。HTML标签不能扩展,XML可以扩展。除了头上面这个是预定义好的:&?xml version=”1.0” encg=”gb2312”?&& 在XML里面有一个规范xsd,在这里我们不学怎么写规范,只是学习一下怎么去用XML就可以了。&二、应用程序配置文件这个配置文件就是个XML文件,经常用的就是数据库连接。&三、XML文档规范XML当中的嵌套问题:&四、XML当中的嵌套用记事本就可以编写XML文件,通过程序来写怎么来写呢?1.Dom[XmlDocument、XDocument](文档对象模型,将整个xml加载到内存中,然后操作)、2.Sax(事件驱动,.net中使用XmlReader(XmlTextReader)、XmlWriter(XmlTextWriter)来替代)等,还有高级的读写技术3.XmlSerializer(xml序列化,需要先定义类)、4.Linq To XML(System.Xml.Linq)等, XmlSerializer要求对每种不同的文件都定义一套类,很麻烦,而Linq To XML则不需要单独创建类,当然更底层一些,代码比XmlSerializer多,灵活性更高。System.Xml下的类是2.0及之前操作xml推荐的,现在很多人也仍然在用这个namespace下的类,这个namespace下的类和Linq To XML非常相似,因此不用单独学。下面我们手动写一个XML.我就用记事本写了.存储单位的所有的员工:&五、新建xml文件插入手写的XML文件,存储员工信息。 1 &?xml version=&1.0& encoding=&gb2312&?&
2 &guoxing&
3 &technicalsection
count=&50& room=&1403&&
4 &employee TNo=&gx001&&
5 &name&陈涛&/name&
6 &age&18&/age&
7 &gender&男&/gender&
8 &/employee&
9 &employee TNo=&gx001&&
10 &name&陈涛2&/name&
11 &age&18&/age&
12 &gender&男&/gender&
13 &/employee&
14 &employee TNo=&gx001&&
15 &name&陈涛3&/name&
16 &age&18&/age&
17 &gender&男&/gender&
18 &/employee&
19 &employee TNo=&gx001&&
20 &name&陈涛4&/name&
21 &age&18&/age&
22 &gender&男&/gender&
23 &/employee&
24 &employee TNo=&gx001&&
25 &name&陈涛5&/name&
26 &age&18&/age&
27 &gender&男&/gender&
28 &/employee&
29 &/technicalsection&
31 &salesdepartment count=&50& room=&1506&&
33 &/salesdepartment&
34 &/guoxing&可以用浏览器进行预览。&六、在浏览器中进行预览的效果接下来我们就介绍通过程序来写一个XML文件。和通过程序来读XML文件。下把我们刚自己手动写好的XML文件拷入程序,然后,读取下。&七、添加XML文件&八、递归输出每个节点在还有子元素的情况下,我们这里已经没办法再遍历出来了。所以在这里我们就考虑递归了。九、递归显示每个子元素代码接下来我们在读取其中的属性&十、输出属性的代码现在我只想输出count属性,怎么办呢?item.Attribute(“count”);//根据属性名来获取指定的属性的值。在name标签里面还有值,怎么才能打印出来里面的值呢?当没有子元素的时候就把值打印出来。判断一下当前标签是否有子元素。&十一、把没有子元素的值也打印出来上面我们是把XML显示在控制台上了,要是加载到treeview就比较的清晰了。(作业)XML当中的其它一些个基本概念。在XML当中可以写个注释注释不能算是XML的元素,但是这些都是XML的节点。所以注释打印不出来。xdoc.Elements()//只返回元素xdoc.Nodes()返回所有节点(包括注释等。)xeRoot.Elements(“net”)搜索直接子元素xeRoot.Descendants(“net”);搜索所有后代元素。将XML文件递归加载到treeview上。&十二、画好界面,加载好文件&十三、递归到树网页RSS订阅打开网站看新闻的时候,会有很多的广告。在网站上找到RSS。&十四、点击:XML订阅对于各大网站,如果我们只看新闻的标题,不看内容的话,对于我们看新闻来讲会更加的直接。打开&十五、RSS订阅formail是怎么得到网页当天的新闻的呢?是连上网页的数据库了么?这是不可能的。我们把刚才的网页xml文件下载-另存为一下。&十六、下载xml文件&十七、用高级记事本打开看下里面的内容想让它正常格式显示的话,复制-粘贴到xml文件&十八、新建xml文件在我们的编辑工具里面,ctrl+K+D,自动格式化了。去掉外部样式表,就跟我们自己写的xml一回事儿了。&十九、普通的xml文件xml文件当中只有一个根节点,包含了什么内容呢?包含channel这个节点。formail通过title识别哪个频道,我们的formail之所以能看到新闻,就是它读取并且解析了这个xml文件。把这个xml文件放到我们写的项目下,&二十、也能实现加载内容xml案例读取order.xml文件,一行一行的输出。&二十一、将xml文件拷贝过来&二十二、需要我们读取并且输出的xml文件&二十三、读取订单xml文件内容并输出的代码我们在看下面一个案例:&二十四、银行交易数据读写案例中需要用到的XML文件插入位置:
1 &?xml version=&1.0& encoding=&utf-8& ?&
val=&1000&/&
val=&000001&/&
val=&.12&/&
val=&腾讯销售部&/&
&付款单位账号
val=&新浪财务部&/&
&收款单位账号
val=&1000&/&
val=&000002&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000003&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000004&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000005&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000006&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000007&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000008&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000009&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000010&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000011&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000012&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000013&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000014&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
val=&1000&/&
val=&000015&/&
val=&.12&/&
val=&1234&/&
&付款单位账号
val=&1234&/&
&收款单位账号
138 &/CFX&在做之前我们先分析一下这个XML文件,有一个根节点CFX,有多条MSG。每个MSG里面包括交易码,流水号,金额。&二十五、还是先把XML文件拷贝过来&二十六、读取交易记录的xml的代码&现在我们观察这么一段XML文件。& & & & & & & & & & & &二十七、需要观察的xml代码文件中有四位同学,现在请获取一年级同学的信息。现在我们有种相对简单的办法。&二十八、引入xml文件&二十九、XmlDocument所在的命名空间&三十、xpath应用演示大家在MSDN里面输入xpath就能找到xpath每个表达式每个意思。下面是我搜集的xpath表达式的连接,大家可以点击查看。XPath 表达式下面我们先说一个问题,就是XML的序列化问题:&三十一、xml序列化需要用到的类&&&&&&三十二、序列化person对象&&三十三、序列化成功&&三十四、序列化list集合,注意变化的地方&&三十五、list序列化成功这样我们通过xml序列化可以非常方便的把一个对象直接写成个xml文件。反序列化变成了xmlSer.Deserialize();&& 现在讲讲刚才我们提出的问题,为什么需要传递typeof(List&Person&)。我们拿到对象的类型能干什么呢?如果一时想不出来,看下下面的案例:&三十六、例题像上面这样写,能写进去,但是有个问题,如果我再写几个对象进去,属性这块能不能动态的获取呢?参考下系统给我们提供的方法,反射,通过类型获取成员。xml序列化就是通过反射来完成的。自己思考下怎么自己写xml序列化:(小提示)&三十七、小提示在xml序列化里面还有一个特性:&三十八、[XmlIgnreAttribute]特性接下来我们看下关于深拷贝、浅拷贝的问题:这个问题在面试的时候也是时有出现的。我们大家得知道什么是深拷贝、浅拷贝,以及让我们去做的话怎么去实现。我写一段代码,大家观察。&三十九、从案例中明白什么是深拷贝,什么是浅拷贝下面看如何实现深拷贝、浅拷贝。&四十、浅拷贝是它父类的方法&测验一下:& & && & & & & & & & &四十一、p1和p2栈地址堆地址不一样&四十二、表示浅拷贝对于引用类型确实指向同一块内存&四十三、实现浅拷贝的代码&四十四、深拷贝的测验&四十五、深拷贝代码&四十六、浅拷贝,深拷贝图解
04-2504-2304-1503-1301-2801-2612-3108-3008-1906-24
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!C#实现的xml操作类完整实例
作者:smartsmile2012
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了C#实现的xml操作类,包含C#针对xml的创建、删除、遍历、插入等常见操作,需要的朋友可以参考下
本文实例讲述了C#实现的xml操作类,分享给大家供大家参考,具体如下:
using System.D
using System.C
using System.W
using System.Web.S
using System.Web.UI;
using System.Web.UI.WebC
using System.Web.UI.WebControls.WebP
using System.Web.UI.HtmlC
using System.IO;
using System.X
using System.T
namespace MSCL
/// &summary&
/// XML 操作基类
/// &/summary&
public class XmlHelper : IDisposable
//以下为单一功能的静态类
#region 读取XML到DataSet
/**//**************************************************
* 函数名称:GetXml(string XmlPath)
* 功能说明:读取XML到DataSet
数:XmlPath:xml文档路径
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDnsConfig/DnsConfig.xml"); //获取xml路径
DataSet ds = EC.XmlObject.GetXml(xmlPath); //读取xml到DataSet中
************************************************/
/**//// &summary&
/// 功能:读取XML到DataSet中
/// &/summary&
/// &param name="XmlPath"&xml路径&/param&
/// &returns&DataSet&/returns&
public static DataSet GetXml(string XmlPath)
DataSet ds = new DataSet();
ds.ReadXml(@XmlPath);
#endregion
#region 读取xml文档并返回一个节点
/**//**************************************************
* 函数名称:ReadXmlReturnNode(string XmlPath,string Node)
* 功能说明:读取xml文档并返回一个节点:适用于一级节点
数: XmlPath:xml文档路径;Node 返回的节点名称
* 适应用Xml:&?xml version="1.0" encoding="utf-8" ?&
&dns1&&/dns1&
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDnsConfig/DnsConfig.xml"); //获取xml路径
Response.Write(XmlObject.ReadXmlReturnNode(xmlPath, "mailmanager"));
************************************************/
/**//// &summary&
/// 读取xml文档并返回一个节点:适用于一级节点
/// &/summary&
/// &param name="XmlPath"&xml路径&/param&
/// &param name="NodeName"&节点&/param&
/// &returns&&/returns&
public static string ReadXmlReturnNode(string XmlPath, string Node)
XmlDocument docXml = new XmlDocument();
docXml.Load(@XmlPath);
XmlNodeList xn = docXml.GetElementsByTagName(Node);
return xn.Item(0).InnerText.ToString();
#endregion
#region 查找数据,返回一个DataSet
/**//**************************************************
* 函数名称:GetXmlData(string xmlPath, string XmlPathNode)
* 功能说明:查找数据,返回当前节点的所有下级节点,填充到一个DataSet中
数:xmlPath:xml文档路径;XmlPathNode:当前节点的路径
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //获取xml路径
DataSet ds = new DataSet();
ds = XmlObject.GetXmlData(xmlPath, "root/items");//读取当前路径
this.GridView1.DataSource =
this.GridView1.DataBind();
ds.Clear();
ds.Dispose();
* Xml示例:
&?xml version="1.0" encoding="utf-8" ?&
&items name="xinnet"&
&url&.cn/cgi-bin/&/url&
&port&80&/port&
************************************************/
/**//// &summary&
/// 查找数据,返回当前节点的所有下级节点,填充到一个DataSet中
/// &/summary&
/// &param name="xmlPath"&xml文档路径&/param&
/// &param name="XmlPathNode"&节点的路径:根节点/父节点/当前节点&/param&
/// &returns&&/returns&
public static DataSet GetXmlData(string xmlPath, string XmlPathNode)
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
DataSet ds = new DataSet();
StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
#endregion
#region 更新Xml节点内容
/**//**************************************************
* 函数名称:XmlNodeReplace(string xmlPath,string Node,string Content)
* 功能说明:更新Xml节点内容
数:xmlPath:xml文档路径;Node:当前节点的路径;Content:内容
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //获取xml路径
XmlObject.XmlNodeReplace(xmlPath, "root/test", "56789"); //更新节点内容
************************************************/
/**//// &summary&
/// 更新Xml节点内容
/// &/summary&
/// &param name="xmlPath"&xml路径&/param&
/// &param name="Node"&要更换内容的节点:节点路径 根节点/父节点/当前节点&/param&
/// &param name="Content"&新的内容&/param&
public static void XmlNodeReplace(string xmlPath, string Node, string Content)
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
objXmlDoc.SelectSingleNode(Node).InnerText = C
objXmlDoc.Save(xmlPath);
#endregion
#region 删除XML节点和此节点下的子节点
/**//**************************************************
* 函数名称:XmlNodeDelete(string xmlPath,string Node)
* 功能说明:删除XML节点和此节点下的子节点
数:xmlPath:xml文档路径;Node:当前节点的路径;
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //获取xml路径
XmlObject.XmlNodeDelete(xmlPath, "root/test"); //删除当前节点
************************************************/
/**//// &summary&
/// 删除XML节点和此节点下的子节点
/// &/summary&
/// &param name="xmlPath"&xml文档路径&/param&
/// &param name="Node"&节点路径&/param&
public static void XmlNodeDelete(string xmlPath, string Node)
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
objXmlDoc.Save(xmlPath);
#endregion
#region 插入一个节点和此节点的子节点
/**//**************************************************
* 函数名称:XmlInsertNode(string xmlPath, string MailNode, string ChildNode, string Element,string Content)
* 功能说明:插入一个节点和此节点的字节点
数:xmlPath:xml文档路径;MailNode:当前节点的路径;ChildNode:新插入的节点;Element:插入节点的子节点;Content:子节点的内容
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //获取xml路径
XmlObject.XmlInsertNode(xmlPath, "root/test","test1","test2","测试内容"); //插入一个节点和此节点的字节点
* 生成的XML格式为
&test2&测试内容&/test2&
************************************************/
/**//// &summary&
/// 插入一个节点和此节点的子节点
/// &/summary&
/// &param name="xmlPath"&xml路径&/param&
/// &param name="MailNode"&当前节点路径&/param&
/// &param name="ChildNode"&新插入节点&/param&
/// &param name="Element"&插入节点的子节点&/param&
/// &param name="Content"&子节点的内容,已经应用CDATA&/param&
public static void XmlInsertNode(string xmlPath, string MailNode, string ChildNode, string Element, string Content)
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
XmlNode objRootNode = objXmlDoc.SelectSingleNode(MailNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
XmlCDataSection xcds = objXmlDoc.CreateCDataSection(Content);
objElement.AppendChild(xcds);
objChildNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
#endregion
#region 插入一节点,带一属性
/**//**************************************************
* 函数名称:XmlInsertElement(string xmlPath, string MainNode, string Element, string Attrib, string AttribContent, string Content)
* 功能说明:插入一节点,带一属性
数:xmlPath:xml文档路径;MailNode:当前节点的路径;Element:新插入的节点;Attrib:属性名称;AttribContent:属性值;Content:节点的内容
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //获取xml路径
XmlObject.XmlInsertElement(xmlPath, "root/test", "test1", "Attrib", "属性值", "节点内容"); //插入一节点,带一属性
* 生成的XML格式为
&test1 Attrib="属性值"&节点内容&/test1&
************************************************/
/**//// &summary&
/// 插入一节点,带一属性
/// &/summary&
/// &param name="xmlPath"&Xml文档路径&/param&
/// &param name="MainNode"&当前节点路径&/param&
/// &param name="Element"&新节点&/param&
/// &param name="Attrib"&属性名称&/param&
/// &param name="AttribContent"&属性值&/param&
/// &param name="Content"&新节点值&/param&
public static void XmlInsertElement(string xmlPath, string MainNode, string Element, string Attrib, string AttribContent, string Content)
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib, AttribContent);
objElement.InnerText = C
objNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
#endregion
#region 插入一节点不带属性
/**//**************************************************
* 函数名称:XmlInsertElement(string xmlPath, string MainNode, string Element, string Content)
* 功能说明:插入一节点不带属性
数:xmlPath:xml文档路径;MailNode:当前节点的路径;Element:新插入的节点;Content:节点的内容
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("/EBDomainConfig/DomainConfig.xml"); //获取xml路径
XmlObject.XmlInsertElement(xmlPath, "root/test", "text1", "节点内容"); //插入一节点不带属性
* 生成的XML格式为
&text1&节点内容&/text1&
************************************************/
public static void XmlInsertElement(string xmlPath, string MainNode, string Element, string Content)
XmlDocument objXmlDoc = new XmlDocument();
objXmlDoc.Load(xmlPath);
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = C
objNode.AppendChild(objElement);
objXmlDoc.Save(xmlPath);
#endregion
//必须创建对象才能使用的类
private bool _alreadyDispose =
private XmlDocument xmlDoc = new XmlDocument();
private XmlNode xmlN
private XmlElement xmlE
#region 构造与释构
public XmlHelper()
~XmlHelper()
Dispose();
protected virtual void Dispose(bool isDisposing)
if (_alreadyDispose)
if (isDisposing)
_alreadyDispose =
#endregion
#region IDisposable 成员
public void Dispose()
Dispose(true);
GC.SuppressFinalize(this);
#endregion
#region 创建xml文档
/**//**************************************************
* 对象名称:XmlObject
* 功能说明:创建xml文档
* 使用示列:
using EC; //引用命名空间
string xmlPath = Server.MapPath("test.xml");
XmlObject obj = new XmlObject();
创建根节点
obj.CreateXmlRoot("root");
// 创建空节点
//obj.CreatXmlNode("root", "Node");
//创建一个带值的节点
//obj.CreatXmlNode("root", "Node", "带值的节点");
//创建一个仅带属性的节点
//obj.CreatXmlNode("root", "Node", "Attribe", "属性值");
//创建一个仅带两个属性值的节点
//obj.CreatXmlNode("root", "Node", "Attribe", "属性值", "Attribe2", "属性值2");
//创建一个带属性值的节点值的节点
// obj.CreatXmlNode("root", "Node", "Attribe", "属性值","节点值");
//在当前节点插入带两个属性值的节点
obj.CreatXmlNode("root", "Node", "Attribe", "属性值", "Attribe2", "属性值2","节点值");
obj.XmlSave(xmlPath);
obj.Dispose();
************************************************/
#region 创建一个只有声明和根节点的XML文档
/**//// &summary&
/// 创建一个只有声明和根节点的XML文档
/// &/summary&
/// &param name="root"&&/param&
public void CreateXmlRoot(string root)
//加入XML的声明段落
xmlNode = xmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
xmlDoc.AppendChild(xmlNode);
//加入一个根元素
xmlElem = xmlDoc.CreateElement("", root, "");
xmlDoc.AppendChild(xmlElem);
#endregion
#region 在当前节点下插入一个空节点节点
/**//// &summary&
/// 在当前节点下插入一个空节点节点
/// &/summary&
/// &param name="mainNode"&当前节点路径&/param&
/// &param name="node"&节点名称&/param&
public void CreatXmlNode(string mainNode, string node)
XmlNode MainNode = xmlDoc.SelectSingleNode(mainNode);
XmlElement objElem = xmlDoc.CreateElement(node);
MainNode.AppendChild(objElem);
#endregion
#region 在当前节点插入一个仅带值的节点
/**//// &summary&
/// 在当前节点插入一个仅带值的节点
/// &/summary&
/// &param name="mainNode"&当前节点&/param&
/// &param name="node"&新节点&/param&
/// &param name="content"&新节点值&/param&
public void CreatXmlNode(string mainNode, string node, string content)
XmlNode MainNode = xmlDoc.SelectSingleNode(mainNode);
XmlElement objElem = xmlDoc.CreateElement(node);
objElem.InnerText =
MainNode.AppendChild(objElem);
#endregion
#region 在当前节点的插入一个仅带属性值的节点
/**//// &summary&
/// 在当前节点的插入一个仅带属性值的节点
/// &/summary&
/// &param name="MainNode"&当前节点或路径&/param&
/// &param name="Node"&新节点&/param&
/// &param name="Attrib"&新节点属性名称&/param&
/// &param name="AttribValue"&新节点属性值&/param&
public void CreatXmlNode(string MainNode, string Node, string Attrib, string AttribValue)
XmlNode mainNode = xmlDoc.SelectSingleNode(MainNode);
XmlElement objElem = xmlDoc.CreateElement(Node);
objElem.SetAttribute(Attrib, AttribValue);
mainNode.AppendChild(objElem);
#endregion
#region 创建一个带属性值的节点值的节点
/**//// &summary&
/// 创建一个带属性值的节点值的节点
/// &/summary&
/// &param name="MainNode"&当前节点或路径&/param&
/// &param name="Node"&节点名称&/param&
/// &param name="Attrib"&属性名称&/param&
/// &param name="AttribValue"&属性值&/param&
/// &param name="Content"&节点传情&/param&
public void CreatXmlNode(string MainNode, string Node, string Attrib, string AttribValue, string Content)
XmlNode mainNode = xmlDoc.SelectSingleNode(MainNode);
XmlElement objElem = xmlDoc.CreateElement(Node);
objElem.SetAttribute(Attrib, AttribValue);
objElem.InnerText = C
mainNode.AppendChild(objElem);
#endregion
#region 在当前节点的插入一个仅带2个属性值的节点
/**//// &summary&
/// 在当前节点的插入一个仅带2个属性值的节点
/// &/summary&
/// &param name="MainNode"&当前节点或路径&/param&
/// &param name="Node"&节点名称&/param&
/// &param name="Attrib"&属性名称一&/param&
/// &param name="AttribValue"&属性值一&/param&
/// &param name="Attrib2"&属性名称二&/param&
/// &param name="AttribValue2"&属性值二&/param&
public void CreatXmlNode(string MainNode, string Node, string Attrib, string AttribValue, string Attrib2, string AttribValue2)
XmlNode mainNode = xmlDoc.SelectSingleNode(MainNode);
XmlElement objElem = xmlDoc.CreateElement(Node);
objElem.SetAttribute(Attrib, AttribValue);
objElem.SetAttribute(Attrib2, AttribValue2);
mainNode.AppendChild(objElem);
#endregion
#region 在当前节点插入带两个属性的节点
/**//// &summary&
/// 在当前节点插入带两个属性的节点
/// &/summary&
/// &param name="MainNode"&当前节点或路径&/param&
/// &param name="Node"&节点名称&/param&
/// &param name="Attrib"&属性名称一&/param&
/// &param name="AttribValue"&属性值一&/param&
/// &param name="Attrib2"&属性名称二&/param&
/// &param name="AttribValue2"&属性值二&/param&
/// &param name="Content"&节点值&/param&
public void CreatXmlNode(string MainNode, string Node, string Attrib, string AttribValue, string Attrib2, string AttribValue2, string Content)
XmlNode mainNode = xmlDoc.SelectSingleNode(MainNode);
XmlElement objElem = xmlDoc.CreateElement(Node);
objElem.SetAttribute(Attrib, AttribValue);
objElem.SetAttribute(Attrib2, AttribValue2);
objElem.InnerText = C
mainNode.AppendChild(objElem);
#endregion
#region 保存Xml
/**//// &summary&
/// 保存Xml
/// &/summary&
/// &param name="path"&保存的当前路径&/param&
public void XmlSave(string path)
xmlDoc.Save(path);
#endregion
#endregion
#region 根据父节点属性值读取子节点值
/**//**************************************************
* 函数名称:GetSubElementByAttribute(string XmlPath, string FatherElenetName, string AttributeName, int AttributeIndex, int ArrayLength)
* 功能说明:根据父节点属性值读取子节点值
数: XmlPath:xml路径;FatherElenetName:父节点名;AttributeName:属性值;AttributeIndex:属性索引;ArrayLength:要返回的节点数组长度
* 适应用Xml:
ArrayList al = new ArrayList();
al = EC.XmlObject.GetSubElementByAttribute(XmlPath, "page", "/index.aspx", 0, 3);
for (int i = 0; i & al.C i++)
Response.Write(al[i].ToString());
Response.Write("&br&");
************************************************/
/**//// &summary&
/// 根据父节点属性读取字节点值
/// &/summary&
/// &param name="XmlPath"&xml路径&/param&
/// &param name="FatherElenetName"&父节点名&/param&
/// &param name="AttributeName"&属性值&/param&
/// &param name="AttributeIndex"&属性索引&/param&
/// &param name="ArrayLength"&要返回的节点数组长度&/param&
/// &returns&&/returns&
public static System.Collections.ArrayList GetSubElementByAttribute(string XmlPath, string FatherElenetName, string AttributeName, int AttributeIndex, int ArrayLength)
System.Collections.ArrayList al = new System.Collections.ArrayList();
XmlDocument docXml = new XmlDocument();
docXml.Load(@XmlPath);
XmlNodeList xn = docXml.DocumentElement.ChildN
//遍历第一层节点
foreach (XmlElement element in xn)
//判断父节点是否为指定节点
if (element.Name == FatherElenetName)
//判断父节点属性的索引是否大于指定索引
if (element.Attributes.Count & AttributeIndex)
//判断父节点的属性值是否等于指定属性
if (element.Attributes[AttributeIndex].Value == AttributeName)
XmlNodeList xx = element.ChildN
if (xx.Count & 0)
for (int i = 0; i & ArrayLength & i & xx.C i++)
al.Add(xx[i].InnerText);
#endregion
#region 根据节点属性读取子节点值(较省资源模式)
/**//**************************************************
* 函数名称:GetSubElementByAttribute(string XmlPath, string FatherElement, string AttributeName, string AttributeValue, int ArrayLength)
* 功能说明:根据父节点属性值读取子节点值
数: XmlPath:xml路径;FatherElenetName:父节点名;AttributeName:属性名;AttributeValue:属性值;ArrayLength:要返回的节点数组长度
* 适应用Xml:
ArrayList al = new ArrayList();
al = EC.XmlObject.GetSubElementByAttribute(XmlPath, "page", "@name", "/index.aspx", 3);
for (int i = 0; i & al.C i++)
Response.Write(al[i].ToString());
Response.Write("&br&");
************************************************/
/**//// &summary&
/// 根据节点属性读取子节点值(较省资源模式)
/// &/summary&
/// &param name="XmlPath"&xml路径&/param&
/// &param name="FatherElement"&父节点值&/param&
/// &param name="AttributeName"&属性名称&/param&
/// &param name="AttributeValue"&属性值&/param&
/// &param name="ArrayLength"&返回的数组长度&/param&
/// &returns&&/returns&
public static System.Collections.ArrayList GetSubElementByAttribute(string XmlPath, string FatherElement, string AttributeName, string AttributeValue, int ArrayLength)
System.Collections.ArrayList al = new System.Collections.ArrayList();
XmlDocument docXml = new XmlDocument();
docXml.Load(@XmlPath);
xn = docXml.DocumentElement.SelectNodes("//" + FatherElement + "[" + @AttributeName + "='" + AttributeValue + "']");
XmlNodeList xx = xn.Item(0).ChildN
for (int i = 0; i & ArrayLength & i & xx.C i++)
al.Add(xx.Item(i).InnerText);
#endregion
更多关于C#相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家C#程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 好朋友心电图机多少钱 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信