LINQ系列:LINQ to XML查询
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查询的更多相关文章
- C# ~ 从 XML 到 Linq 到 Linq to XML
.XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...
- hibernate mapping文件中 xmlns会导致linq to xml 查询不到对应的节点
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Linq之Linq to XML
目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...
- LinQ系列文章
温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...
- C#3.0新增功能09 LINQ 基础01 语言集成查询
连载目录 [已更新最新开发文章,点击查看详细] 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. 数据查询历来都表示为简单的字符串,没有编译时类型检查或 Inte ...
- LINQ系列目录
1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...
- LINQ系列:LINQ to ADO.NET概述
LINQ to ADO.NET 包括两种独立的技术: LINQ to DataSet 和 LINQ to SQL. 使用 LINQ to DataSet 可以对DataSet 执行丰富而优化的查询,而 ...
- 使用Linq快速的操作XML
开始内容之前先分享一段话 有时候,当你知道要做什么的时候就做的很快,比如你要实现个功能,码字的活儿不算很难,做个检索也不会有什么难倒你的.但是,做着做着,你发现好像世界上的工作都在重复,于是你有种心要 ...
- C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...
- LINQ 系列
C#图解教程 第十九章 LINQ LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...
随机推荐
- bind模拟
if (!Function.prototype.bind) { Function.prototype.bind = function(oThis) { if (typeof this !== 'fun ...
- 图片采用base64压缩,可以以字符串的形式传送base64给服务端转存为图片
(function () { var coverImage = document.querySelector('<div id="coverImage">file< ...
- Leetcode Maximum Product Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- 利用PHP的ob函数实现生成静态化页面
之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的.今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下. 经他讲解后,才知道其实生成静 ...
- linux(centos)下挂载ntfs文件系统
在将硬盘插到Linux系统上,打开硬盘时一直提示:unknown filesystem type 'ntfs'.在尝试网上的方法也遇到了一些问题. 下面按照遇到的问题,按照正确的方式注意操作从而避免问 ...
- Storm 中什么是-acker,acker工作流程介绍
概述 我们知道storm一个很重要的特性是它能够保证你发出的每条消息都会被完整处理, 完整处理的意思是指: 一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所导致的所有的tupl ...
- json相关的一些用法
一. json可以表示3种类型的值: 简单值 . 对象. 数组 表示对象时:>1. 没有变量的概念 ,所以不用申明变量 >2. 没有末尾结束 ...
- Python语言中对于json数据的编解码——Usage of json a Python standard library
一.概述 1.1 关于JSON数据格式 JSON (JavaScript Object Notation), specified by RFC 7159 (which obsoletes RFC 46 ...
- java-如何用eclipse打包jar
Eclipse通过导出的方式(右键单击项目,之后选择Export)打包java类文件生成jar包. 方法一:(在项目工程没有引用外部jar包时,直接导出) 选中工程---->右键,Export. ...
- Python之路Day15--CSS补充以及JavaScript(一)
一.上节作业问题: 上节作业问题: 1.css重用 <style> 如果整个页面的宽度 > 900px时: { .c{ 共有 } .c1{ 独有 } } .c2{ 独有 } < ...