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. Hoops随便记的

    段 包含图形的段·几何·属性:颜色,可见性,选择功能等等·子段:更低层的段段的名称·段可以进行命名·可以像文件系统一样表示路径:绝对路径.相对路径.通配符当前段(激活的段)·你可以在任何一个时间来处理 ...

  2. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  3. jsp使用EL表达式回传boolean值出错的问题

    在最近做的一个项目中使用session回传的属性中有一个为boolean,报出错. 属性名字为"isAdmit",布尔类型.后来我上网查了一下,是因为我使用了Myeclipse的自 ...

  4. 基于webpack和vue.js搭建开发环境

    前言 在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己.秉承着“不听老人言,吃亏在眼前”的优良作风,我还是决定玩火自焚. ...

  5. js中自定义构造函数讲解

    什么是构造函数? 构造函数其实就是一个函数,只是用途和普通函数,不太一样, 构造函数一般用于初始化对象 <script> function Person(){ this.name=&quo ...

  6. HDU 2492 Ping pong (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Ping pong Problem Description N(3<=N<=2000 ...

  7. 【PostgreSQL】PostgreSQL添加新服务器连接时,报错“Server doesn't listen ”,已解决。

    PostgreSQL添加新的服务器连接时,报错:

  8. 使用pip安装BeautifulSoup4模块

    1.测试是否安装了BeautifulSoup4模块 import bs4 print bs4 执行报错说明没有安装该模块 Traceback (most recent call last): File ...

  9. Jquery学习插件之手风琴

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

  10. 一些linux包相关命令

    针对centos 查看CentOS版本方法: lsb_release -a #result------------ LSB Version: :base-4.0-amd64:base-4.0-noar ...