1. 读取XML文件

  XDocument和XElement类都提供了导入XML文件的Load()方法,可以读取XML文件的内容,并转换为XDocument或XElement类的实例。

  示例XML文件:Product.xml

<?xml version="1.0" encoding="utf-8"?>
<Products>
<Product>
<ProductID>1</ProductID>
<ProductName>LINQ to XML</ProductName>
<UnitPrice>10</UnitPrice>
</Product>
<Product>
<ProductID>2</ProductID>
<ProductName>LINQ to SQL</ProductName>
<UnitPrice>20</UnitPrice>
</Product>
</Products>
XElement root = XElement.Load(Server.MapPath("Product.xml"));

2. 查询根元素

XDocument doc = XDocument.Load(Server.MapPath("Product.xml"));

IEnumerable<XElement> elements = from e in doc.Elements("Products")
select e; foreach (XElement e in elements)
{
Console.WriteLine("{0}-{1}", e.Name, e.Value);
}
XDocument doc = XDocument.Load(Environment.CurrentDirectory + @"\Product.xml");
IEnumerable<XElement> elements = from e in doc.Elements("Products")
select e;
foreach (XElement e in elements)
{
Console.WriteLine("{0}-{1}", e.Name, e.Value);
}

3.  查询节点

XDocument doc = XDocument.Load(Environment.CurrentDirectory + @"\" + "Product.xml");
var query = from p in doc.Element("Products").Elements("Product")
where (int)p.Element("ProductID") ==
select p; query.ToList().ForEach(item =>
{
Console.WriteLine("{0}-{1}-{2}", item.Element("ProductID").Value, item.Element("ProductName").Value, item.Element("UnitPrice").Value);
});
XElement xml = XElement.Load(Environment.CurrentDirectory + @"\" + "Product.xml");
var query = from p in xml.Elements("Product")
where (int)p.Element("ProductID") ==
select p;

4. 查询子孙节点

  Descendants轴方法与Elements类型,不过Elements只查找当前元素下的直接子节点,而Descendants则会遍历当前元素下任意层级的子元素。

  示例xml文件:

<?xml version="1.0" encoding="utf-8"?>
<Products>
<Product>
<Book>
<ProductID>1</ProductID>
<ProductName>LINQ to XML</ProductName>
<UnitPrice>10</UnitPrice>
</Book>
</Product>
<Product>
<Book>
<ProductID>2</ProductID>
<ProductName>LINQ to SQL</ProductName>
<UnitPrice>20</UnitPrice>
</Book>
</Product>
</Products>

  使用Descendants()方法查询:

XElement root = XElement.Load(Environment.CurrentDirectory + @"\" + "Product.xml");
var query = from b in root.Descendants("Book")
select b;
foreach (var item in query)
{
Console.WriteLine(item.Element("ProductName").Value);
}

5. 查询属性

  示例xml文件:

<?xml version="1.0" encoding="utf-8"?>
<Products>
<Product ID="1">
<ProductID>1</ProductID>
<ProductName>LINQ to XML</ProductName>
<UnitPrice>10</UnitPrice>
</Product>
<Product ID="2">
<ProductID>2</ProductID>
<ProductName>LINQ to SQL</ProductName>
<UnitPrice>20</UnitPrice>
</Product>
</Products>
XElement xml = XElement.Load(Environment.CurrentDirectory + @"\" + "Product.xml");
var query = from p in xml.Elements("Product")
where (int)p.Attribute("ID") ==
select p;
XElement xml = XElement.Load(Environment.CurrentDirectory + @"\" + "Product.xml");
var query = from p in xml.Elements("Product")
where (int)p.Attribute("ID") ==
select new
{
ID = p.Attribute("ID").Value,
ProductID = p.Element("ProductID").Value,
ProductName = p.Element("ProductName").Value
};
XElement xml = XElement.Load(Environment.CurrentDirectory + @"\" + "Product.xml");
var query = from p in xml.Nodes().OfType<XElement>()
where (int)p.Attribute("ID") ==
select new
{
ID = p.Attribute("ID").Value,
ProductID = p.Element("ProductID").Value,
ProductName = p.Element("ProductName").Value
};

LINQ系列:LINQ to XML查询的更多相关文章

  1. C# ~ 从 XML 到 Linq 到 Linq to XML

    .XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...

  2. hibernate mapping文件中 xmlns会导致linq to xml 查询不到对应的节点

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Linq之Linq to XML

    目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...

  4. LinQ系列文章

    温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...

  5. C#3.0新增功能09 LINQ 基础01 语言集成查询

    连载目录    [已更新最新开发文章,点击查看详细] 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. 数据查询历来都表示为简单的字符串,没有编译时类型检查或 Inte ...

  6. LINQ系列目录

    1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...

  7. LINQ系列:LINQ to ADO.NET概述

    LINQ to ADO.NET 包括两种独立的技术: LINQ to DataSet 和 LINQ to SQL. 使用 LINQ to DataSet 可以对DataSet 执行丰富而优化的查询,而 ...

  8. 使用Linq快速的操作XML

    开始内容之前先分享一段话 有时候,当你知道要做什么的时候就做的很快,比如你要实现个功能,码字的活儿不算很难,做个检索也不会有什么难倒你的.但是,做着做着,你发现好像世界上的工作都在重复,于是你有种心要 ...

  9. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  10. LINQ 系列

    C#图解教程 第十九章 LINQ   LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...

随机推荐

  1. ACM: Gym 101047B Renzo and the palindromic decoration - 手速题

     Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64 ...

  2. UBUNTU 16.04 编译 OPENJDK8

    参考了几篇文章,和错误查询,最后总结如下 一.下载 我比较倾向于使用mercurial来获取源代码,虽然你得挑网络稳定的时候更新,但是易更新. 从官网查找一下,可以通过以下步骤完成源代码的下载 1. ...

  3. js判断undefined类型

    js判断undefined类型 if (reValue== undefined){    alert("undefined");    }  发现判断不出来,最后查了下资料要用ty ...

  4. linux 多线程基础

    参考出处:http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html 1.进程与线程 进程是程序代码在系统中的具体实现.进程是拥有所需资 ...

  5. ADO.NET数据访问模板整理

    /// <summary> /// 数据访问类:hi_test /// </summary> public partial class TestDA { public Test ...

  6. HTML5可视化编辑与微数据

    1.HTML 5 全局 contenteditable 属性 contenteditable 属性规定是否可编辑元素的内容. <p contenteditable="true" ...

  7. 单例模式和angular的services的使用方法

    在现实生活中存在着有这样的特点的一些类: A.这些类只能有一个实例: B.这些能够自动实例化: C.这个类对整个系统可见,即必须向整个系统提供这个实例. 不妨举一个具体的单例模式的例子:比如教室里面的 ...

  8. 百度编辑器ueditor的简单使用

    最近刚被分配了以个消息发布的任务,其中用到了富文本编辑器.以前也用过,不过这次我选择的是百度富文本编辑器ueditor1_4_3-utf8-jsp版的. 其实看ueditor功能很强大,不过百度的设计 ...

  9. touchstart、touchmove、touchend 实现移动端上的触屏拖拽

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. Oracle数据库操作

    本例使用oracle数据库,使用PL/SQL可视化工具: --查询员工表数据 (emp为pl/sql自带的表,也可自己新建)select * from emp; --创建表空间create table ...