使用 LINQ to XML(使用它编写一个自定义的RSS阅读器)
示例下载(Orcas下编写)
什么是LINQ to XML?
LINQ to XML 是.NET 3.5内建的LINQ数据提供者,被实现在“System.Xml.Linq”命名空间。
LINQ to XML 提供了一个清晰的编程模型,使你可以读取、创建和写入XML数据。你也可以使用LINQ to XML对XML执行LINQ查询,XML内容可以来自文件系统,远端HTTP地址、Web服务或者内存XML数据。
相对于现在.NET中低层次的XmlReader/XmlWriter API,LINQ to XML 提供更为丰富(并且容易)的数据查询和处理。也比XmlDocument提供的DOM API更为高效(并使用更少内存)。
使用LINQ to XML查询本地XML文件
为了对LINQ to XML如何工作有个感官认识,我们使用自定义的结构创建一个如下简单的XML文件用来存放RSS订阅。 然后我们可以使用命名空间“System.Xml.Linq”里定义的新类XDoumnet来打开和查询上面的XML文档。特别的,我想过滤掉元素<Feed>属性status为disabled的节点。我可以用下面的代码实现:
注意上面的代码片段,我是怎样使用XDocument.Load(path)——返回一个XDocument实例——静态方法来加载XML文件的。因为要在ASP.NET下运行这段代码,我用了Server.MapPath(path)帮助方法来获取XML文件的路径。
一旦有了XDocument实例,我可以使用LINQ查询表达式查找我要的数据。在上面的代码里我查询XML文件里的每一个<Feed>元素。对应的是下面的查询表达式:
就像你看到的一样,我可以像操作集合和数组一样来操作返回的数据序列。VS 2008对此匿名序列提供了的全面的智能感知和编译期检查。
我也可以将结果绑定到ASP.NET、Windows 窗体或者WPF上的UI控件。比如:在我的页面里定义一个下拉列表控件:
什么是LINQ to XML?
LINQ to XML 是.NET 3.5内建的LINQ数据提供者,被实现在“System.Xml.Linq”命名空间。
LINQ to XML 提供了一个清晰的编程模型,使你可以读取、创建和写入XML数据。你也可以使用LINQ to XML对XML执行LINQ查询,XML内容可以来自文件系统,远端HTTP地址、Web服务或者内存XML数据。
相对于现在.NET中低层次的XmlReader/XmlWriter API,LINQ to XML 提供更为丰富(并且容易)的数据查询和处理。也比XmlDocument提供的DOM API更为高效(并使用更少内存)。
使用LINQ to XML查询本地XML文件
为了对LINQ to XML如何工作有个感官认识,我们使用自定义的结构创建一个如下简单的XML文件用来存放RSS订阅。 然后我们可以使用命名空间“System.Xml.Linq”里定义的新类XDoumnet来打开和查询上面的XML文档。特别的,我想过滤掉元素<Feed>属性status为disabled的节点。我可以用下面的代码实现:
注意上面的代码片段,我是怎样使用XDocument.Load(path)——返回一个XDocument实例——静态方法来加载XML文件的。因为要在ASP.NET下运行这段代码,我用了Server.MapPath(path)帮助方法来获取XML文件的路径。
一旦有了XDocument实例,我可以使用LINQ查询表达式查找我要的数据。在上面的代码里我查询XML文件里的每一个<Feed>元素。对应的是下面的查询表达式:
Where (feed.Attribute("status") Is Nothing) OrElse (feed.Attribute("status").Value <> "disabled")
然后使用select子句来指示我想要的数据的样子。如果简单的写成“select feed”,LINQ to XML 将返回匹配条件的表示每个XML元素的XElement对象组成的序列。在上面的代码实例中我使用到了匿名类型。
Select Name = feed.Element("Name").Value, Url = feed.Element("Url").Value
就像你看到的一样,我可以像操作集合和数组一样来操作返回的数据序列。VS 2008对此匿名序列提供了的全面的智能感知和编译期检查。
我也可以将结果绑定到ASP.NET、Windows 窗体或者WPF上的UI控件。比如:在我的页面里定义一个下拉列表控件:
posted on 2007-08-07 23:26 LoongTsui 阅读(1923) 评论(8) 编辑 收藏 举报