1.可扩展标记性语言(XML)是存储和交换数据的重要方法。LINQ为语言增加了一些特性,相比XPath和XSLT,我们可以更容易使用XML。
2.有关XML的重要事项如下:
- XML文档必须有一个根元素来包含所有其他元素
- XML标签必须合理嵌套
- 与HTML标签不同,XML标签是区分大小写的
- XML特性是名字/值配对,它包含了元素的额外元数据
- XML文档中的空格是有效的。这与把空格作为单个空格输出的HTML不同
3.XML类
LINQ to XML可以以两种方式和XML配合使用。
- 第一种方式是作为简化的XML操作API
- 第二种方式是使用本章看到的LINQ查询工具
LINQ to XML API由很多表示XML树组件的类组成。一般使用3个最重要的类包括XElement,XAttribute和XDocument。
4.使用XML树的值
Nodes:Nodes方法返回IEnumerable<object>类型的对象,因为返回的节点可能是不同的类型,比如XElement,XComment等,我们可以使用以类型作为参数的方法OfType(type)来指定返回某个类型的节点。
例如:IEnumerable<XComment> comments= root.Nodes().OfType<XComment>();//获取root下类型为XComment的子节点
Elements:使用无参数的Elements方法返回所有子XElements或者使用单个name参数返回具有这个名字的子XElements。
例如:IEnumerable<XElement> elements = root.Elements();
Element:该方法只获取当前节点的第一个子XElement。
例如:XElement element = root.Element("Phone");
Descentdants和Ancestors:这些方法不反悔直接的子元素或父元素,而是忽略嵌套级别,包括所有之上或者之下的节点。
5.增加节点以及操作XML
可以使用Add方法为现有的元素增加子元素。允许我们在一次方法调用中,不管增加的节点类型是什么,增加希望的任意多的元素。
例如:
item.Add(new XElement("Job"),
new XElement("Class"),
new XElement("Department")
);
6.使用XML属性
属性提供了有关XElement的额外信息,它放在XML元素的开始标签中,例如:
//获取根节点
XElement root = employees.Element("Employees");
//增加根节点的属性
root.Add(
new XAttribute("Color","Red"),
new XAttribute("Size","XL")
);
可以使用Attribute方法从一个XElement系欸但获取特性,提供特性名作为参数即可。
例如:XAttribute attr= root.Attribute("Color");
要移除特性,我们可以选择一个特性然后使用Remove方法,或在它的父节点中使用SetAttributeValue方法把特性值设置为null。
例如:root.Attribute("Color").Remove();
root.SetAttributeValue("Size",null);
7.节点的其他类型
(1)XComment XML注释由<!--和-->记号之间的文本组成。
(2)XDeclaration XML声明 new XDeclaration("1.0","utf-8","yes")