Linq to XML 基本类
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 基本类相关推荐
- LINQ to XML 建立,读取,增,删,改
LINQ to XML的出现使得我们再也不需要使用XMLDocument这样复杂的一个个的没有层次感的添加和删除.LINQ可以使的生成的XML文档在内存中错落有致.下面以一个小的例子说名LINQ to ...
- Linq初级班 Linq To XML体验(基础篇)
LINQ To XML体验(基础) 这两天开始学习LINQ to XML的知识,我会继续把自己的感想和示例发布给初学者们学习的,一样欢迎高手们多多指点,请勿使用过激语言,针锋相对,我是个初学者,自知还 ...
- LINQ之路19:LINQ to XML之X-DOM更新、和Value属性交互
本篇包含两部分内容:X-DOM更新一节中我们会详细讨论LINQ to XML的更新方式,包括Value的更新.子节点和属性的更新.通过Parent节点实现更新: 和Value属性交互一节会详细讨论XE ...
- LINQ to XML 常用操作(转)
查找具有特定属性的元素 XElement root = XElement.Load("PurchaseOrder.xml"); IEnumerable<XElement> ...
- Linq To Xml学习 - 1.LINQ to XML 概述
LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML. 它将 XML 文档置于内存中,这一点很像文档对象模型 ...
- [Linq]Linq To Xml (待整理)
[Linq]Linq To Xml (待整理) Linq To Xml (待整理) posted on 2012-02-28 10:38 水墨.MR.H 阅读(...) 评论(...) 编辑 收藏 转 ...
- LINQ to XML .Net 3.5 中的新XML对象
System.Xml.Linq 命名空间中,有一系列新的LINQ to XML 帮助对象,使处理内存中的XML文档变的非常简单. 示例使用的Hamlet.xml来源自C#高级编程源代码. XDocum ...
- 24.C#LINQ TO XML(十二章12.3)
自己也写了那么多,但还有很多不懂,有点浮躁吧,但饭还是要吃啊,说说LINQ TO XML吧. LINQ TO XML位于System.Xml.Linq程序集,并且大多数类型位于System.Xml.L ...
- 用linq查询html中div个数,C#使用Linq to XML进行XPath查询
最近在用到HtmlAgliltyPack进行结点查询时,发现这里选择结点使用的是XPath.所以这里总结一下在C#中使用XPath查询XML的方式.习惯了用Linq,这里也是用的Linq to xml ...
最新文章
- 一起谈.NET技术,.NET 打包入门
- java maven centos7 yum安装
- python3手机版下载-Python3中文版下载
- awk rand函数问题
- Python教程:切片、迭代、列表生成式
- linux中atoi函数的实现 值得借鉴,【转】atoi()函数的实现
- 如何删除以横线“-”开头的文件
- EconomicIndoor集成测试
- 背包问题九讲_背包问题
- Jquery 全选,反选
- xstatic图形连接linux,RHCE认证考试模拟题深入讲解:linux配置静态IP地址为:192.168.0.X!...
- CKfinder中文乱码的解决.
- 虚拟服务器磁盘 厚置备置零,VMware ESXi 虚拟硬盘格式记录:厚置备延迟置零、厚置备置零、精简置备...
- 微信小应用第一天(简介)
- 微信商户平台企业付款功能
- POJO、JavaBean、EJB的区别
- C语言中EOF是什么?
- ubuntu系统dhcp服务器,ubuntu如何启用dhcp服务器配置
- 广东理工大学计算机专业招生分数线,深大等广东高校分专业录取分数线汇总,你被哪个专业录取了?...
- 读论文 Attention Scaling for Crowd Counting