zoukankan      html  css  js  c++  java
  • 【原创】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 查询低。

    结束
    文章很短,希望对各位有帮助。最后欢迎各位拍砖!

  • 相关阅读:
    datagridview 保存为excel输出
    将excel导入到datatable
    Json 转换为c#数组
    css 没有图片则隐藏或者显示默认图片
    模拟Get请求
    根据多个字符分隔字符串
    DbHelperSQL
    数据库相关
    json对象
    ajax滚动条懒加载
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/2584688.html
Copyright © 2011-2022 走看看