Jane.T

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

命名空间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

posted on 2009-07-25 18:44  Jane.T  阅读(363)  评论(1编辑  收藏  举报