Linq to XML 基本类
2012-09-26 21:44
281 查看
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>迭代载入)
用法:
customers是一个集合,如果new XStreamingElement("customers", customers.ToList());就无法利用该类特特性,因为整个数据源就载入了内存
通用方法:
AddAnnotation方法:添加批注,可以使任意类型,和XMLInfoset无关
用法:
Changed,Changing事件:通知节点改变
Validate方法:验证XML架构,System.Xml.Schema命名空间内的扩展方法,可以结合Changed事件验证改变后的XML
System.Xml.XPath命名空间有对XNode扩展的XPath方法
分别代表了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 4MB XmlReader xr = XmlReader.Create(uri, settings); while (xr.Read()) { if ((xr.NodeType == XmlNodeType.Element) && (xr.Name == chunkElement)) { // For debugging and demo purposes only Console.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方法
相关文章推荐
- C# Linq to xml 基本操作
- linq to xml 基本操作
- LinqtoXml的基本操作
- LINQ TO XML 基本操作
- C# LINQ基本用法(3) ---LINQ To Xml
- linq to xml demo
- 黄聪:Linq初级班 Linq To XML体验(编程篇)
- linq to xml操作XML,这是转的大神的,自己学习了,也希望你们也能学习一下
- linq to xml操作XML
- 提交了 VS 2008 sp1 对 Linq to SQL 的 xml 字段类型支持的一个 bug
- LINQ To Xml:使用XPath
- LINQ to XML 类概述
- LINQ TO XML(查询)
- Linq to xml:链接轴
- Linq to xml实现xml数据增删改查
- Linq to Xml 小结
- LINQ To XML And RSS
- Linq to xml 代码实战(2)
- LINQ to XML 编程基础
- [代码]获取XML元素的值(LINQ to XML)