注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

Linq To Xml学习 - 1.LINQ to XML 概述  

2012-05-20 15:03:07|  分类: asp.net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。

它将 XML 文档置于内存中, 这一点很像文档对象模型 (DOM)。 您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过网络发送。 但是,LINQ to XML 与 DOM 不同: 它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 Visual C# 2008 在语言方面的改进。

LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。 LINQ to XML 的查询功能在功能上(尽管不是在语法上)与 XPath 和 XQuery 具有可比性。 Visual C# 2008 集成 LINQ 后,可提供更强的类型化功能、编译时检查和改进的调试器支持。

通过将查询结果用作 XElement 和 XAttribute 对象构造函数的参数,实现了一种功能强大的创建 XML 树的方法。 这种方法称为“函数构造”,利用这种方法,开发人员可以方便地将 XML 树从一种形状转换为另一种形状。

LINQ to XML 提供了改进的 XML 编程接口,这一点可能与 LINQ to XML 的 LINQ 功能同样重要。 通过 LINQ to XML,对 XML 编程时,您可以实现任何预期的操作,包括:

  • 从文件或流加载 XML。

  • 将 XML 序列化为文件或流。

  • 使用函数构造从头开始创建 XML。

  • 使用类似 XPath 的轴查询 XML。

  • 使用 Add、Remove、ReplaceWith 和 SetValue 等方法对内存 XML 树进行操作。

  • 使用 XSD 验证 XML 树。

  • 使用这些功能的组合,可将 XML 树从一种形状转换为另一种形状。

创建 XML 树是否方便,这一点非常重要。 例如,若要创建一个小型 XML 树,可以编写以下 C# 代码:

XElement contacts =     new XElement("Contacts",         new XElement("Contact",             new XElement("Name", "Patrick Hines"),             new XElement("Phone", "206-555-0144",                  new XAttribute("Type", "Home")),             new XElement("phone", "425-555-0145",                 new XAttribute("Type", "Work")),             new XElement("Address",                 new XElement("Street1", "123 Main St"),                 new XElement("City", "Mercer Island"),                 new XElement("State", "WA"),                 new XElement("Postal", "68042")             )         )     ); 

请注意,缩进用于构造 XML 树的代码可显示基础 XML 的结构。

直接使用 XML 元素

在使用 XML 编程时,主要关注的通常是 XML 元素,也可能关注属性。 在 LINQ to XML 中,可以直接使用 XML 元素和属性。 例如,可以执行以下操作:

  • 创建 XML 元素而根本不使用文档对象。 当必须使用 XML 树的片段时,这可简化编程。

  • 直接从 XML 文件加载 T:System.Xml.Linq.XElement 对象。

  • T:System.Xml.Linq.XElement 对象序列化为文件或流。

使用 LINQ to XML 时,仅在文档的根级别添加注释或处理说明时,才需使用 XDocument 类

 

名称和命名空间的简化处理

处理名称、命名空间和命名空间前缀通常是 XML 编程的复杂部分。LINQ to XML 完全不需要处理命名空间前缀,从而简化了名称和命名空间。 可以轻松控制命名空间前缀。 但如果您决定不显式控制命名空间前缀,则在序列化时,LINQ to XML 将会分配命名空间前缀(如果需要)或使用默认命名空间进行序列化。 如果使用默认命名空间,则生成的文档中将没有命名空间前缀。

LINQ to XML 也不需要用户理解什么是 NameTable 以及其使用方式。

 

  评论这张
 
阅读(806)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017