C#知识(二)使用XML

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

转载于:https://www.cnblogs.com/JaneTang/archive/2009/07/25/1530991.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值