C#操作XML简要教程(经典文章值的一读)

本文介绍如何使用C#进行Xml文件的操作,包括显示、增加和删除Xml内容的具体实现方法。
由于Xml的易共享性等众多优点,Xml技术越来越多地被应用于企业数据处理等领域,如应用于企业报表、新闻发布、会计数据处理等等。
  Xml正快速成为从中间层传送数据到桌面的工具,由于Xml的数据可以通过中间层代理与多种后端(数据库)源集成,目前绝大多数数据库制造商已全面支持Xml技术,提供了各种强大功能处理Xml数据。
  Microsoft的.Net围绕Xml这一核心提供了一个强大而快速的开发工具——C#,它具有前所未有的高开发效率,特别是在Xml编程方面。
  C#提供了许多相关类处理Xml数据,如处理
stream的类:
XmlReader和XmlWriter;
DOM的类:XmlNode、XmlDocument和XmlElement等;
Xpath的类:XmlNavigator;
XSLT的类:XslTransform。

  1.显示Xml文件内容
  用C#编程实现显示Xml文件中信息的方法是使用.Net提供的标准类把Xml文件内容读入一个 StreamReader类对象中,再用XmlDataDocument类的DataSet读Xml的方法去读Xml信息到DataSet中,DataSet再以DataView的方式赋给一个Web Form上的DataGrid,最后由DataBind显示数据,具体实现代码如下:
  using System.Xml; //xml的命名空间
  //处理Xml必须加的Namespace,还需在References中加System.Xml.Dll
  using System.IO; //操作文件的命名空间
  //读Xml文件必须加的Namespace
  然后在Page_Load中加入如下代码:
  protected void Page_Load(object sender, EventArgs e){
  string datafile="guest.Xml" ;
  //假设Xml文件名为guest.Xml
  StreamReader tyj=new StreamReader(Server.MapPath(datafile)); //使用streamReader读取数据
  XmlDataDocument datadoc = new XmlDataDocument();
  //创建该对象为了读取Xml
  datadoc.DataSet.ReadXml(tyj); //使用xmldocument对象把读取的xml数据放到dataset
  //读取guest.Xml文件内容
  DataGrid1.DataSource = datadoc.DataSet.Tables[0].DefaultView;
  //设置DataGrid数据源
  DataGrid1.DataBind();
  //绑定
  datadoc=null ; //释放对象占用的资源
  //释放资源
  tyj.Close();}
  //释放StreamReader类,这非常重要,否则下次打开会显示文件已经被使用
  对应于显示用的Web Form中DataGrid的功能,我们需要增加下面的函数:
  protected void OnSelectName(object sender,EventArgs e) {
  Session["select_name"]=(string)DataGrid1.SelectedItem.Cells[1].Text.ToString();
  //把选定的 DataGrid某行中的一个单元中的值(Name)存入一个会话变量中,以便下一页用
  Response.Redirect("Xml_manage.aspx");}
  //转到有增加删除功能的管理页
  Web Form加入以下代码:
  <asp:DataGrid id=DataGrid1 runat="server" onselectedindexchanged="OnSelectName" >
  <property name="Columns">
  <asp:buttoncolumn Text="选择" commandname="Select" />
  </property>
  代码中划线部分的作用是当按了“选择”按钮后,执行OnSelectName()中的程序,把选定的 DataGrid中某行中的一个单元中的值(Name)存入一个会话变量中,然后转到下一页。

  2.增加Xml文件内容
  在Web Form中分别增加相应的四个Label(姓名,来自哪里,Email地址,留言内容)和四个TextBox和一个用于提交的Button,并为这button增加如下代码:
  string datafile = "guest.Xml" ;
Xml
Document Xmldocument = new XmlDocument() ;
  Xmldocument.Load(Server.MapPath(datafile)) ; //使用xmldocument对象加载xml文件
  //把guest.Xml读到Xmldocument中
  DocumentNavigator navigator = new DocumentNavigator(Xmldocument) ; //比较重要的类
  //最重要的类
  navigator.MoveToDocumentElement() ; //移动到文档元素
  navigator.Insert(System.Xml.TreePosition.FirstChild, XmlNodeType.Element, "Guest","","") ;//插入节点Guest  
navigator.Insert(System.Xml.TreePosition.FirstChild, XmlNodeType.Element, "Name","","") ;
  navigator.Insert(System.Xml.TreePosition.FirstChild, XmlNodeType.Text,"Name","","") ;
  navigator.value="/Name.Text" ; //给节点赋值
  //为该节点赋值
  navigator.MoveToParent() ;
  //返回父节点 Guest
  ……
  //使用同类语句,在元素Name下插入另一些元素如Country、E-mail地址和留言等
  Xmldocument.Save(Server.MapPath(datafile)); //保存xml文件
  //最后保存这个Xml文档
  navigator=null ;
  Xmldocument=null ;
  //释放Xml文档,这样其他程序可以用它
  上述代码使用DocumentNavigator类增加元素和内容,注意使用后要释放资源。
  删除Xml文件内容
  删除选定记录,对于你上面选择的节点,下面代码可查找到该节点并清除选中的信息:
  string datafile = "guest.Xml" ;
  XmlDocument Xmldocument = new XmlDocument() ;
  Xmldocument.Load(Server.MapPath(datafile)) ;
  //把guest.Xml读到Xmldocument中
  DocumentNavigator navigator = new DocumentNavigator(Xmldocument) ;
  navigator.MoveToDocumentElement() ;
  navigator.Select("/Guests/Guest[Name=""+Session["select_name"]+""]");
  //参数是XPath
  navigator.RemoveSelected(); //执行删除
  //执行删除
  Xmldocument.Save(Server.MapPath(datafile)); //重新保存xml文档
  //最后保存这个Xml文档
  navigator=null;
  //释放类
  Xmldocument=null ;
  //释放Xml文档,这样其他程序可以用它
  如需将Xml文件中所有信息清除,使用“navigator.RemoveChildren();”语句即可实现。

结 论
  综上可知,C#编写Xml应用程序不但快捷而且方便,在编写ASP.Net数据库应用程序时,用Xml文件替代一些小的Table,能减少许多数据库存取连接,也能让其他网络程序更易使用这些数据。
  目前Xml的主要瓶颈在于文件系统的读出或写入,故应使用更多内存和缓存方式,如果信息量不是巨大无比且修改量也较小,而浏览量巨大的话,使用Xml方法将是很好的选择;相反,如数据量巨大,应考虑使用支持Xml数据库,无论你使用ADO+连接其他数据库,还是使用SQL server,C#中都有直接的类函数可让这些数据库中的信息直接和Xml交互访问。
C# XML入门经典——C#编程人员必备的XML技能 作者:[美]Stewart Fraser, Steven 著,毛尧飞,崔伟 译 出版社:清华大学出版社 出版时间:2003年11月 第1章 在C#中使用XML的原因1.1 使用XML的原因1.1.1 开放性1.1.2 简单性1.1.3 自我描述性1.1.4 互操作性1.1.5 结构1.1.6 分开结构和内容1.1.7 可扩展性1.2 什么是XML1.2.1 XML涉及多种语言1.2.2 XML文档1.3 使用XML的对象1.3.1 内容表示1.3.2 B2B电子商务1.3.3 远程过程调用1.3.4 数据存储和访问1.3.5 不使用XML的情况1.4 XML标准1.4.1 什么是W3C1.4.2 XML标准1.4.3 与XML相关的标准1.4.4 标准重要的原因1.5 XML如何适应.NET1.5.1 在.NET Framework中使用XML1.5.2 .NET中的XML支持1.6 小结第2章 XML概述2.1 XML的概念2.1.1 XML元素2.1.2 XML属性2.1.3 XML解析器2.1.4 构建XML2.1.5 XML文档的各个组成部分2.2 创建格式良好的XML文档2.2.1 XML中的元素2.2.2 XML中的属性2.2.3 在XML中使用注释2.3 验证XML文档的有效性2.3.1 文档类型定义2.3.2 XML Schema2.3.3 XML编码2.4 小结第3章 在.NET中使用XML3.1 XML如何适合.NET3.1.1 XML3.1.2 文档对象模型(DOM)3.1.3 命名空间3.1.4 DTD和XML Schema3.1.5 XPath 3.1.6 XSLT3.2 .NET Framework使用XML3.2.1 配置文件3.2.2 ADO.NET3.2.3 SOAP和Web服务3.3 案例分析——电话簿样式应用程序3.4 小结第4章 在.NET中XML4.1 流模型4.1.1 流模型和DOM的比较4.1.2 流模型中的变体4.2 XmlTextReader类4.2.1 XmlTextReader属性4.2.2 取属性4.2.3 取较大的数据块4.3 XmlNodeReader类4.4 XmlValidatingReader类4.5 小结第5章 在.NET中编写XML5.1 利用.NET类编写XML文档5.2 XmlWriter类5.2.1 XmlWriter方法5.2.2 XmlWriter属性5.3 XmlWriter类5.3.1 XmlTextWriter构造函数5.3.2 XmlTextWirter属性5.3.3 处理XmlTextWirter5.3.4 写入较大的数据块5.4 小结第6章 在.NET中实现DOM6.1 文档对象模型6.1.1 文档对象模型与流模型6.1.2 .NET DOM继承模型6.2 XmlNode类6.2.1 XmlNode的定义6.2.2 XmlNode的属性6.2.3 XmlNode的方法6.3 XmlDocument类6.3.1 创建节点6.3.2 加载和保存6.3.3 迭代XmlDocument实例6.3.4 编辑XML文档6.4 案例分析6.4.1 体系结构6.4.2 应用程序详细信息6.4.3 加载用户联系人6.4.4 搜索联系人6.4.5 导出联系人6.4.6 导入其他联系人6.5 小结第7章 XPath和.NET7.1 System.Xml.XPath命名空间7.2 .NET中的XPath类7.2.1 XPathDocument类<br
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值