命名空间System.Xml有许多访问和处理XML的类和子命名空间:
1. XmlNode类
XmlNode类表示文档树中的一个节点,是该章中许多类的基类。
XmlNodeList类 表示一个节点集合。
2. XmlDocument类 : XmlNode类
XmlDocument类用于加载和保存磁盘或其他地方的数据。 使用XmlDocument类把文件加载到内存后, 就可以从中获得文档的跟节点,开始读取和处理XML了。
using System.Xml;
…
XmlDocument document = new XmlDocument(); document.Load(@"C:\Begining Visual C#\Chapter23\books.xml");
这两行代码创建了XmlDocument类的一个新实例,并给它加载books.xml文件。
3. XmlElement类 : XmlNode类
XmlDocument类的实例有个属性DocumentElement,它返回的是一个XmlElement的实例
XmlDocument document = new XmlDocument(); document.Load(@"C:\Begining Visual C#\Chapter23\books.xml"); XmlElement element = document.DocumentElement;
XmlElement 类所带的属性:
XmlElement.FirstChild //该属性返回根节点之后的第一个节点 XmlElement.lastChild //该属性返回当前节点的最后一个子节点 XmlElement.ParentNode //该属性返回当前节点的父节点 XmlElement.NextSibling //该属性返回有相同父节点的下一个节点 XmlElement.HasChildNodes //该属性可以检查当前元素是否有子元素
<books> <!--根节点, book节点的ParentNode--> <book pages=”944”> <!--books节点的FirstChild--> <title>Beginning Visual C#</title> <author>Jerry Zhang</author> <!--title元素的NextSibling--> <code>7582</code> </book> <book Pages=”1000”> <!--books节点的LastChild--> <title>Professional C# 2nd Edition</title> <author>Jane Tang</author> <code>7043</code> </book> </books>
-
XmlElement节点是:<books>,<book>,<title>,<author> 和 <code>.
-
XmlText节点是:title, author和code开标记和闭标记之间的文本。
4. XmlAttribute类 : XmlNode类
5. XmlText类
XmlText节点是:title, author和code开标记和闭标记之间的文本。
6. 修改节点的值
-
插入新节点: 可使用方法CreateNode,CreateElement, CreateAttribute, CreateTextNode, CreateComment, AppendChild, InsertAfter and InsertBefore.
-
删除节点:RemoveAll 和 RemoveChild.
7. 选择节点
如何在不遍历整个树的情况下选择节点?
XmlNode类包含两个方法常用于从文档中选择节点,且不遍历其中的每个节点:
SelectSingleNode(XPath) 用于选择一个节点,如果创建一个查找多个节点的查询,就只返回第一个节点
SelectNodes(XPath) 以XmlNodeList类的形式返回一个节点集合
using System.Xml XmlDocument mDocument = new XmlDocument(); mCurrentNode = mDocument.DocumentElement.SelectSingleNode("//books"); XmlNodeList nodeList = mCurrentNode.SelectNodes("//book/author");
XPath查询示例(参照3里面的代码段) | 目的 |
. | 选择当前节点 |
.. | 选择当前节点的父节点 |
* | 选择当前节点的所有子节点 |
title | 选择带有特定名称的所有子节点,这里是title |
@pages | 选择当前节点的一个属性 |
@* | 选择当前节点的所有属性 |
author[2] | 按照索引选择一个子节点,这里是第二个author节点 |
text() | 选择当前节点的所有文本节点 |
author/text() | 选择当前节点的一个或多个孙子节点 |
//title | 在文档中选择带有特定名称的所有节点,这里是所有的title节点 |
//book/title | 在文档中选择带有特定名称和特定父节点名称的所有节点,在这里父节点名称是book,节点名称是title |
//book[author=’Jerry Zhang’] | 选择值满足条件的节点,这里选择Jerry Zhang参与编写的图书 |
//book[@pages=’1000’] | 选择属性值满足条件的节点 |
以上摘自《C#入门经典》
Other link: http://www.cnblogs.com/lds85930/archive/2009/04/26/1443738.html