XDocument,XElement类:

分别代表了XML文档和XML元素,都继承了抽象基类XContainer,调用load可以载入不同存储方式的xml内容并生成文档或元素实例类,静态方法Parse可以直接解析字符串为xml

Elements,Descendants方法都是返回指定名字的元素集合,不同的是Elements方法返回的是查找当前元素的子元素,Descendants会继续查找所有子节点

XmlConvert类:

EncodeName或EncodeNmToken可以编码不合法节点名为合法的,如:

XmlConvert.EncodeNmToken("s d")的结果为"s_x0020_d",其中的空格被编码成了_x0020_

XAttribute类:

XML属性示例,可以放入任何XContainer中

NextAttribute和PreviousAttribute属性分别用于获取父元素的相邻元素

XNode类:

是众多X*类的基类,提供节点插入替换等操作

XNamespace,XName类:

用于定义命名空间和节点名(tag),XNamespace和String联合体会产生一个新的Xname,ToString方法会返回"{命名空间}tag名"的字符串,该解析字符串成为扩展名称;

当给元素设置XName时会自动处理命名空间声明,也可以直接设置扩展名称格式的字符串,但是这样的开销会比显示声明的XNamespace开销更大

定义前缀方法:

XElement node = new XElement(ns + "name", new XAttribute(XNamespace.Xmlns + "c", ns), "jack");
//输出<c:name xmlns:c="www.tt.com">jack</c:name>

XStreamingElement类:

用于延迟表达式求值,使XML元素在使用时值才被求出,类似Ling表达式的延迟求值,该类代表一个IEnumerable<T>目录树,当读取大量集合数据时,结合XmlReader能够保持一个较小的内存占用(因为不是一次全部载入,IEnumerable<T>迭代载入)

用法:

         static IEnumerable<XElement> ChunkedDataSourceReader(String uri, String chunkElement){XmlReaderSettings settings = new XmlReaderSettings();            settings.XmlResolver = new XmlSecureResolver(new XmlUrlResolver(), "C:\\sources");settings.MaxCharactersInDocument = (1024 * 1024) * 4; // MAX 4MBXmlReader xr = XmlReader.Create(uri, settings);while (xr.Read()){if ((xr.NodeType == XmlNodeType.Element)&& (xr.Name == chunkElement)){// For debugging and demo purposes onlyConsole.WriteLine("Reading a chunk element from data source");yield return XElement.ReadFrom(xr) as XElement;}}}static void Main(string[] args){var customers = ChunkedDataSourceReader(@"CustomersWithOrders.xml","customer");XStreamingElement xmlCustomers = new XStreamingElement("customers",customers);xmlCustomers.Save(@"Output.xml");}

customers是一个集合,如果new XStreamingElement("customers", customers.ToList());就无法利用该类特特性,因为整个数据源就载入了内存

通用方法:

AddAnnotation方法:添加批注,可以使任意类型,和XMLInfoset无关

用法:

node.AddAnnotation("A1");
node.AddAnnotation("A2");
var annos= node.Annotations<string>();//读取批注
foreach (var anno in annos)
Console.WriteLine(anno);

Changed,Changing事件:通知节点改变

Validate方法:验证XML架构,System.Xml.Schema命名空间内的扩展方法,可以结合Changed事件验证改变后的XML

System.Xml.XPath命名空间有对XNode扩展的XPath方法

转载于:https://www.cnblogs.com/FlyCat/archive/2012/09/26/2704745.html

Linq to XML 基本类相关推荐

  1. LINQ to XML 建立,读取,增,删,改

    LINQ to XML的出现使得我们再也不需要使用XMLDocument这样复杂的一个个的没有层次感的添加和删除.LINQ可以使的生成的XML文档在内存中错落有致.下面以一个小的例子说名LINQ to ...

  2. Linq初级班 Linq To XML体验(基础篇)

    LINQ To XML体验(基础) 这两天开始学习LINQ to XML的知识,我会继续把自己的感想和示例发布给初学者们学习的,一样欢迎高手们多多指点,请勿使用过激语言,针锋相对,我是个初学者,自知还 ...

  3. LINQ之路19:LINQ to XML之X-DOM更新、和Value属性交互

    本篇包含两部分内容:X-DOM更新一节中我们会详细讨论LINQ to XML的更新方式,包括Value的更新.子节点和属性的更新.通过Parent节点实现更新: 和Value属性交互一节会详细讨论XE ...

  4. LINQ to XML 常用操作(转)

    查找具有特定属性的元素 XElement root = XElement.Load("PurchaseOrder.xml"); IEnumerable<XElement> ...

  5. Linq To Xml学习 - 1.LINQ to XML 概述

    LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML. 它将 XML 文档置于内存中,这一点很像文档对象模型 ...

  6. [Linq]Linq To Xml (待整理)

    [Linq]Linq To Xml (待整理) Linq To Xml (待整理) posted on 2012-02-28 10:38 水墨.MR.H 阅读(...) 评论(...) 编辑 收藏 转 ...

  7. LINQ to XML .Net 3.5 中的新XML对象

    System.Xml.Linq 命名空间中,有一系列新的LINQ to XML 帮助对象,使处理内存中的XML文档变的非常简单. 示例使用的Hamlet.xml来源自C#高级编程源代码. XDocum ...

  8. 24.C#LINQ TO XML(十二章12.3)

    自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧. LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.L ...

  9. 用linq查询html中div个数,C#使用Linq to XML进行XPath查询

    最近在用到HtmlAgliltyPack进行结点查询时,发现这里选择结点使用的是XPath.所以这里总结一下在C#中使用XPath查询XML的方式.习惯了用Linq,这里也是用的Linq to xml ...

最新文章

  1. 一起谈.NET技术,.NET 打包入门
  2. java maven centos7 yum安装
  3. python3手机版下载-Python3中文版下载
  4. awk rand函数问题
  5. Python教程:切片、迭代、列表生成式
  6. linux中atoi函数的实现 值得借鉴,【转】atoi()函数的实现
  7. 如何删除以横线“-”开头的文件
  8. EconomicIndoor集成测试
  9. 背包问题九讲_背包问题
  10. Jquery 全选,反选
  11. xstatic图形连接linux,RHCE认证考试模拟题深入讲解:linux配置静态IP地址为:192.168.0.X!...
  12. CKfinder中文乱码的解决.
  13. 虚拟服务器磁盘 厚置备置零,VMware ESXi 虚拟硬盘格式记录:厚置备延迟置零、厚置备置零、精简置备...
  14. 微信小应用第一天(简介)
  15. 微信商户平台企业付款功能
  16. POJO、JavaBean、EJB的区别
  17. C语言中EOF是什么?
  18. ubuntu系统dhcp服务器,ubuntu如何启用dhcp服务器配置
  19. 广东理工大学计算机专业招生分数线,深大等广东高校分专业录取分数线汇总,你被哪个专业录取了?...
  20. 读论文 Attention Scaling for Crowd Counting

热门文章

  1. 为什么不能够用unsigned 修饰 float和double
  2. USB入门系列之二:USB的连接模型
  3. mpi4py多进程实例/举例
  4. python3改变路径出现的SyntaxError问题
  5. 隔空操作之隔空下象棋
  6. 今天且明白父母为什么生死度外的让孩子们读书
  7. Django实战之开发面向用户的界面
  8. rsync远程同步的基本配置与使用
  9. Ubuntu Server 14.04 下root无法ssh登陆
  10. LINUX 第五章 apache php mysql