LINQ系列:LINQ to XML类
LINQ to XML由System.Xml.Linq namespace实现,该namespace包含处理XML时用到的所有类。在使用LINQ to XML时需要添加System.Xml.Linq.dll的引用,在代码声明中添加using:
using System.Xml.Linq;
1. System.Xml.Linq namespace的类及其描述
类 | 描述 |
---|---|
XAttribute | XML中的一个属性 |
XCData | CDATA文本节点 |
XComment | XML注释 |
XContainer | 一个抽象基类,表示具有子节点的节点 |
XDeclaration | XML声明 |
XDocument | XML文档,该类派生自XContainer类 |
XDocumentType | XML DTD(文档类型定义) |
XElement | XML元素,是XContainer的派生类 |
XName | XML元素或属性的名称 |
XNamespace | XML命名空间 |
XNode | XML元素树的节点 |
XNodeDocumentOrderComparer | 根据节点在XML文档内的顺序对它们进行比较 |
XNodeEqualityComparer | 根据节点的值对它们进行比较 |
XObject | 表示XNodes和XAttributes的抽象类 |
XObjectChange | XObject事件发生时的事件类型 |
XObjectChangeEventArgs | 为Changing和Chenged事件提供信息和数据 |
XObjectChangeEventHandler | 处理XObject中Changed和Changing事件的方法 |
XProcessingInstruction | XML处理指令 |
XText | XML文本 |
示例:XML声明指定XML版本、XML文档的编码,以及XML文档是否是一个独立的文件。
// using System.Xml.Linq;
XDocument doc = new XDocument
(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Root", "LINQ to XML")
);
string xml = doc.Declaration.ToString() + Environment.NewLine + doc.ToString();
Console.WriteLine(xml);
运行结果:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>LINQ to XML</Root>
2. XElement类
XElement类表示XML元素,它是XContainer类的派生类,而XContainer类又派生于XNode类。一个元素就是一个节点,XElement是LINQ to XML最重要最基本的类之一,它包含所有创建和操作XML元素所必需的功能。通过它可以创建元素,添加和修改元素的属性,操作元素的内容等。
XDocument doc = new XDocument
(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment("Created by LINQ to XML"),
new XElement
(
"Products",
new XElement("ProductID", ),
new XElement("ProductName", "LINQ to XML"),
new XElement("UnitPrice", 10m)
)
);
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<!--Created by LINQ to XML-->
<Products>
<ProductID>1</ProductID>
<ProductName>LINQ to XML</ProductName>
<UnitPrice>10</UnitPrice>
</Products>
3. XAttribute类
XAttribute类用来处理属性,属性是与元素相关联的名称/值对。
XElement product = new XElement
(
"Root",
new XElement
(
"Product",
new XAttribute("id", )
)
);
<Root>
<Product id="1" />
</Root>
XElement product = new XElement
(
"Root",
new XElement
(
"Product",
new XAttribute("ProductID", ),
new XAttribute("ProductName", "LINQ to XML")
)
);
<Root>
<Product ProductID="1" ProductName="LINQ to XML" />
</Root>
删除元素属性:
XAttribute attr = product.Element("Product").Attribute("ProductName");
attr.Remove();
4. XDocument类
XDocument类提供了处理有效XML文档的方法,包括声明、注释和处理指令。XDocument类派生自XContainer类,可以有子节点。XML标准限值XDocument对象只包含单个XElement子节点,此节点作为根节点或跟元素。
LINQ系列:LINQ to XML类的更多相关文章
- C# ~ 从 XML 到 Linq 到 Linq to XML
.XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...
- [引]LINQ to XML 类概述
本文转自:http://msdn.microsoft.com/zh-cn/library/bb387023.aspx 本主题提供 System.Xml.Linq 命名空间中 LINQ to XML 类 ...
- Linq之Linq to XML
目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将wor ...
- LINQ系列目录
1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...
- LinQ系列文章
温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...
- LINQ 系列
C#图解教程 第十九章 LINQ LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...
- 白话LINQ系列2---以代码演进方式学习LINQ必备条件
今天,我们通过一个简单的示例代码的演进过程,来学习LINQ必备条件:隐式类型局部变量:对象集合初始化器:委托:匿名函数:lambda表达式:扩展方法:匿名类型.废话不多说,我们直接进入主题. 一.实现 ...
- C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...
- Linq系列
LINQ 图解 Linq中的Select——投影 Linq学习资源 Expert C# 5.0中的Linq部分
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
随机推荐
- clientX .offsetX .screenX x 的区别
clientX 设置或获取鼠标指针位置相对于当前窗口的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. clientY 设置或获取鼠标指针位置相对于当前窗口的 y 坐标,其中客户区域不包括窗口自 ...
- Lession1 写在机器学习之前
机器学习从学习方式上来讲,可以分为两类: 监督学习(Supervised Learning),简而言之就是“有标签”学习 无监督学习(Unsupervised Learning),简而言之就是“无标签 ...
- 【BZOJ1911】[Apio2010]特别行动队 斜率优化DP
想了好久啊....——黑字为第一次更新.——这里是第二次更新,维护上下凸包据题而论,第一种方法是化式子的方法,需要好的化式子的方法,第二种是偏向几何,十分好想,纯正的维护凸包的方法,推荐. 用了我感觉 ...
- 【异常】No ManagedConnections available within configured blocking timeout
Caused by: org.jboss.util.NestedSQLException: No ManagedConnections available within configured bloc ...
- Django动态渲染多层菜单
为后续给菜单设置权限管理方便,通过给页面模版菜单动态渲染,通过数据菜单表进行匹配需要渲染的菜单 #Django表结构 class Menus(models.Model): name = models. ...
- grunt-connect-proxy解决开发时跨域问题
最近的项目中前后端是完全分离开发的,前端用grunt管理项目.这样就会导致一个问题:开发时前端调用后台的接口时因为不在一个服务器,所以会出现跨域问题.但是也不能用JSONP或CROS方式实现真正的跨域 ...
- Html5+Css3制作下拉菜单的三种方式
一.渐变式改变ol的高度 1.外部为ul标签,在每个li里嵌套一个ol列表2.设置外部li左浮动,内部ol标签绝对定位,外部li标签相对定位3.设置ol的高为0,溢出隐藏4.外部li标签:hover ...
- mysql单列去重复group by分组取每组前几条记录加order by排序
mysql分组取每组前几条记录(排名) 附group by与order by的研究,需要的朋友可以参考下 --按某一字段分组取最大(小)值所在行的数据 复制代码代码如下: /* 数据如下: name ...
- git使用手册
1.git常用命令 >>首先做git clone 形成本地repository: >>然后做checkout形成分支 列出所有分支 $ git branch –r 切换到新分 ...
- Android使用Application的好处
如果一个应用程序有2个入口的,1个入口程序打开修改其中的内容,怎么实现另一个入口的数据也修改呢? 下面就用到Application来实现数据的共享,因为一个应用程序只有一个Application,Ap ...