当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > LINQ学习笔记:X-DOM概览

ASP.NET
Asp.net 时间操作基类(支持短日期,长日期,时间差)
asp.net 获取机器硬件信息(cpu频率、磁盘可用空间、内存容量等)
asp.net 数据库备份还原(sqlserver+access)
Asp.Net 数据操作类(附通用数据基类)
Asp.net 弹出对话框基类(输出alet警告框)
Asp.net 文件上传类(取得文件后缀名,保存文件,加入文字水印)
Asp.net Socket客户端(远程发送和接收数据)
Asp.net 字符串操作基类(安全,替换,分解等)
Asp.Net数据输出到EXCEL表格中
asp.net Gridview里添加汇总行
asp.net UpdatePanel的简单用法
asp.net ajaxControlToolkit FilteredTextBoxExtender的简单用法
this connector is disabled错误的解决方法
sql事务应用积累
asp.net Page.Controls对象(找到所有服务器控件)
在asp.NET中字符串替换的五种方法
ASP.NET缓存方法分析和实践示例代码
asp.net 在DNN模块开发中遇到的resx怪问题
ASP.NET State service状态服务的问题解决方法
asp.net 结合mysql存储过程进行分页代码

ASP.NET 中的 LINQ学习笔记:X-DOM概览


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 123 ::
收藏到网摘: n/a

X-DOM概览

X-DOM的核心类型. XElement是所有这些类型当中最常用的. XObject是整个继承体系中的根源; XElement和XDocument是整个箱体层级的根.

考察下面的代码:

 1: string xml =
 2: @"<customer id='123' status='archived'>
 3: <firstname>Joe</firstname>
 4: <lastname>Bloggs<!--nice name -></lastname>
 5: </customer>";
 6:
 7: XElement customer = XElement.Parse (xml);

XObject是所有XML内容的抽象基类. 它定义了一个指向父元素的连接以及一个可选的XDocument.

XNode是除开属性(attributes)之外的多数XML内容的基类. 一个区别就是XNode可以处理一个有序的混合类型的XNode的集合, 考虑下面的XML片段:

 1: <data>
 2: Hello world
 3: <subelement1/>
 4: <!--comment-->
 5: <subelement2/>
 6: </data>

在父元素<data>里面, 第一个节点是一个XText(Hello world), 接着是一个XElement节点, 然后是一个XComment节点, 最后是另外的一个XElement节点. 相反的, 一个XAttribute只能配对出现.

虽然一个XNode能够访问它的父元素, 但它并没有子节点的概念; 这是它的子类型XContainer的工作. XContainer定义了一些用于处理子节点的成员并且它也是XElement和XDocument的抽象基类.

XElement引入了一些管理attributes的成员例如Name和Value. 对于那种元素只拥有一个单一的XText子节点的情况, Value属性可以读取或者设置子节点的内容, 而不再需要不必要的导航. 感谢Value, 大多数情况下你可以避免和XText节点直接打交道.

XDocument表示一棵XML树的根. 更精确的说, 它包装了根元素, 增加了一个XDeclaration, 处理指令, 以及其它的根级别的相关操作. 不像W3C DOM, 它的使用是可选的, 你甚至可以在没有创建XDocument的时候加载, 操作, 或者保存一个X-DOM. 对于XDocument的非依赖意味着你可以高效而简易的将一个字节点树移到另外一个X-DOM层级上面.

加载与解析

XElement与XDocument两者都提供了静态Load和Parse的方法从一个已存在的数据源中来构建一棵X-DOM树.

  • Load从文件, URI, TextReader或者XMLReader创建X-DOM
  • Parse从一个string创建了X-DOM

XNode也提供了一个ReadFrom的静态方法, 该方法实例化来自于XmlReader的任何节点类型. 不像Load, 它读取了一个节点之后就立即停止, 你可以通过手动读取XmlReader来继续进行处理. 另外你也可以反向操作, 使用一个XmlReader(CreateReader)或者XmlWriter(CreateWriter)来读/写一个XNode.

例如:

 1: XDocument fromWeb = XDocument.Load
 2: ("http://albahari.com/sample.xml");
 3:
 4: XElement fromFile = XElement.Load
 5: (@"e:mediasomefile.xml");
 6:
 7: XElement config = XElement.Parse (
 8: @"<configuration>
 9: <client enabled='true'>
 10: <timeout>30</timeout>
 11: </client>
 12: </configuration>");

保存与序列化

在任何节点上调用ToString都会将其内容转换成一个XML字符串-该字符串就像我们看到的那样已经被断行符格式化过了.(我们还可以在调用ToString的时候指定SaveOptions.DisableFormatting, 这样将禁用格式化断行符)

同时XElement和XDocument也提供了一个Save方法用于将一个X-DOM写入到文件中, TextWriter 或者 XmlWriter. 如果你选择了使用文件, 那么XML declaration将会被自动写入. 另外XNode也包含了一个WriteTo的方法, 其接收一个XmlWriter参数.

待续!