【原创】C# Linq to XML
引言
LINQ to XML 提供使用 .NET 语言集成查询 (LINQ) Framework 的内存中 XML 编程接口。 LINQ to XML 使用最新的 .NET Framework 语言功能,相当于更新的和重新设计的文档对象模型 (DOM) XML 编程接口。
在当今的web开发过程中xml被经常使用(有用来存储小数据的;有用来数据传输的;也有用来做配置的)。对于很少接触xml的朋友一开始都比较怕操作xml(本人以前就是很怕操作xml),本文将教你如何使用linq to xml 轻松而简单地获取值和属性。希望看完本文的朋友以后不再惧怕操作xml。而在linq to xml 没有出现之前,我们通常使用XmlDocument/XmlNode来读值和属性,如兴趣的朋友可以看看下面几篇文章
http://www.cnblogs.com/zhxhdean/archive/2012/04/18/2345546.html
http://www.cnblogs.com/zhxhdean/archive/2012/02/27/2369451.html
http://www.cnblogs.com/zhxhdean/archive/2012/02/07/2340916.html
正文
例如我们有以下xml内容(保存为books.xml):
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book>
<Subject ID="1">
Head First 设计模式
</Subject>
<Content>
Head First 设计模式中文版
</Content>
</Book>
<Book>
<Subject ID="2">
C# 高级编程第5版
</Subject>
<Content>
C# 高级编程第5版
</Content>
</Book>
<Book>
<Subject ID="3">
C# 入门手册
</Subject>
<Content>
C# 入门手册
</Content>
</Book>
</Books>
使用linq to xml 实现获取subject的值及属性ID。
var books = from nodes in XElement.Load("books.xml").Elements("Book") select nodes;
if (books != null)
{
foreach (var b in books)
{
listBox1.Items.Add(b.Element("Subject").Attribute("ID").Value + ":" + b.Element("Subject").Value.Trim());
}
}
运行代码,效果图如下:
注:1.引用using System.Xml.Linq;
2.XElement.Load注意路径是否正确
Linq to xml VS xPath(来自http://msdn.microsoft.com/zh-cn/library/bb675156.aspx)
XPath 不允许新类型的投影。 它只能从树中返回节点集合,而 LINQ to XML 可以执行查询并将对象图或 XML 树投影为新形状。 LINQ to XML 查询包含更多功能并且比 XPath 表达式的功能强大得多。
XPath 表达式在字符串中孤立存在。 C# 或 Visual Basic 编译器不能帮助在编译时分析 XPath 表达式。 相比之下,C# 或 Visual Basic 编译器可以分析和编译 LINQ to XML 查询。 编译器能够捕捉许多查询错误。
XPath 结果不是强类型。 在许多情况下,XPath 表达式的计算结果是一个对象,并且该对象需要由开发人员确定属性类型并根据需要强制转换结果。 相比之下,LINQ to XML 查询生成的投影是强类型。
使用 LINQ to XML 中 XPath 功能的 XPath 查询的执行性能比 LINQ to XML 查询低。
结束
文章很短,希望对各位有帮助。最后欢迎各位拍砖!
posted on 2012-07-10 14:58 BarneyZhang 阅读(1038) 评论(0) 编辑 收藏 举报