XmlNode与XmlElement (2012-07-25 13:35:25)

一、xmlnode类节点:
xmlnode类表示xml文档中的单个节点,其命名空间为:System.Xml
XmlNode的三个最主要的子类包括:XmlDocument、XmlDataDocument及XmlDocumentFragment
1.XmlNode类的属性:
public virtual bool HasChildNodes {get;} 获取一个值,该值指示当前节点是否有任何子节点
  public virtual XmlNodeList ChildNodes {get;} 获取当前节点的所有子节点
  public virtual XmlNode FirstChild {get;} 获取当前节点的第一个子级
  public virtual XmlNode LastChild {get;} 获取当前节点的最后一个子级
  public virtual XmlNode ParentNode {get;} 获取当前节点的父级
  public virtual XmlNode NextSibling {get;} 获取当前节点的下一个兄弟节点
  public virtual XmlNode PreviousSibling {get;} 获取当前节点的上一个兄弟节点
  public virtual string InnerText {get; set;} 获取或设置当前节点及其所有子节点的文本内容的串联值
  public virtual string InnerXml {get; set;} 获取或设置仅代表当前节点的子节点的标记
  public virtual string OuterXml {get;} 获取表示当前节点及其所有子节点的标记
public virtual string Attributes{get;} 获取一个XmlAttributeCollection ,包含该节点的属性
public virtual string Item{get;set;} 获取指定的子元素
XmlNode类的常用方法
publlic virtual XmlNodeList SelectNodes(string); 选择文档中匹配 XPath 表达式的节点列表
  publlic virtual XmlNode SelectSingleNode(string); 选择文档中匹配 XPath 表达式的第一个 XmlNode
  public virtual XmlNode AppendChild(XmlNode newChild) 将指定的节点添加到该节点的子节点列表的末尾
  public virtual XmlNode PrependChild(XmlNode newChild) 将指定的节点添加到该节点的子节点列表的开头
  public virtual XmlNode RemoveChild(XmlNode oldChild) 移除指定的子节点
  public virtual XmlNode ReplaceChild(XmlNode newChild,XmlNode oldChild) 用 newChild 节点替换子节点 oldChild
public virtual bool equals() 确定两个object实例是否相等
public virtual bool ReferenceEquals() 确定指定的Object 实例是否是相同的实例
public virtual string ToString() 返回当前object的string
public virtual bool XmlNode() 当在派生类中被重写时,该节点的所有字节点会保存到指定的XmlWriter中
二. XmlNodeList类:
  该类表示XmlNode的有序集合,它有以下常用成员:
  Count——以整数形式返回XmlNodeList中的节点数
  ItemOf——搜索在指定索引处的节点
  GetEnumerator()——提供迭代遍历节点列表的foreach样式
  Item()——返回参数指定的索引处的节点
三.XmlDocument类
XmlDocument类的对象代表了一个XML文档
1. XmlDocument类的属性:
Attributes ——包含节点属性
ChildNodes——获取节点的所有子节点
DocumentElement——获取文档的根XmlElement
DocumentType——获取包含doctype声明的节点
FirstChild——获取节点的第一个子级
LastChild——获取节点的最后一个子级
ParentNode——获取该节点的父级
HasChildNodes——获取一个值,该值指示当前节点是否有任何子节点
InnerText ——获取或设置当前节点及其所有子节点的文本内容的串联值
 InnerXml——获取或设置仅代表当前节点的子节点的标记
OuterXml ——获取表示当前节点及其所有子节点的标记
Item——获取指定的子元素
value——获取或设置节点的值
2.XmlDocument类常用方法
Save——将XML文档保存到指定的位置
CreateAttribute——创建此节点的一个副本
createElement_x——创建XmElement
CreateNode——创建XmlNode
CreateTextNode——创建具有指定文本的XmlText
GetType——获取当前实例的Type
ImportNode——将节点从另一个文档导入到当前文档
InsertAfter——将指定的节点紧接着插入指定的引用节点之后
InsertBefore——将指定的节点紧接着插入指定的引用节点之前
Load——加载指定的xml数据
LoadXml——从指定的字符串加载xml文档
SelectNodes——选择文档中匹配 XPath 表达式的节点列表
   SelectSingleNode——选择文档中匹配 XPath 表达式的第一个 XmlNode
   AppendChild——将指定的节点添加到该节点的子节点列表的末尾
   PrependChild——将指定的节点添加到该节点的子节点列表的开头
   RemoveChild——移除指定的子节点
   ReplaceChild——用 newChild 节点替换子节点 oldChild
3.XmlDocument类常用Public事件
NodeChaged——当属于该文档的节点的Value已被更改时发生
NodeChaging——当属于该文档的节点的Value将被更改时发生
NodeInserted——当属于该文档的节点已被插入另一个节点时发生
NodeInserting——当属于该文档的节点已将插入另一个节点时发生
NodeRemoved——当属于该文档的节点已被从其父级移除时发生
NodeRemoved——当属于该文档的节点将被从其父级移除时发生
实例:
界面输入联系人信息保存到xml文件中
protected void Page_Load(object sender, EventArgs e)
...{

}
private void SaveXMLData_nodemode()
...{
try
...{
//创建一个XmlDocument对象,用于载入存储信息的xml文件
XmlDocument xdoc = new XmlDocument();
xdoc.Load(Server.MapPath("phonobood.xml"));
//创建一个新的menber节点并将它添加到根节点下
XmlElement parenetNode = xdoc.createElement_x("member");
xdoc.DocumentElement.PrependChild(parenetNode);
//创建所有用于存储信息的节点
XmlElement nameNode = xdoc.createElement_x("name");
XmlElement telphoneNode = xdoc.createElement_x("telphone");
XmlElement qqNode = xdoc.createElement_x("qq");
//XmlElement msnNode = xdoc.createElement_x("msn");

//获取文本信息
XmlText nameText = xdoc.CreateTextNode(Request.Form.Get("name"));
XmlText telphoneText = xdoc.CreateTextNode(Request.Form.Get("telphone"));
XmlText qqText = xdoc.CreateTextNode(Request.Form.Get("qq"));
//将上面创建的各个存储信息的节点添加到menber节点下,但并不包含最终的值
parenetNode.AppendChild(nameNode);
parenetNode.AppendChild(telphoneNode);
parenetNode.AppendChild(qqNode);
//将上面获取的文本信息添加到与之相对应的节点中
nameNode.AppendChild(nameText);
telphoneNode.AppendChild(telphoneText);
qqNode.AppendChild(qqText);
//保存存储信息的xml文件
xdoc.Save(Server.MapPath("phonebood.xml"));

}
catch (exception se)
...{
Console.WriteLine(se.Message);
}

}

XmlNode和XmlElement。这两个类的功能极其类似:
1、通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类。我们知道子类继承了父类所有的属性和方法,因此,XmlNode所拥有的方法和属性,在XmlElement类中也是可以使用的。
2、XmlElement是特殊的XmlNode类,Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等。也就是XmlNode是这多种节点的统称。但是XmlElement专门指的就是元素节点。
3、XmlElement是具现类,可以直接实例化,而XmlNode是抽象类,必须通过XmlDocument实例通过CreateNode创建。
4、XmlElement拥有众多对Attribute的操作方法,可以方便的对其属性进行读写操作(XmlNode也可以通过Attributes属性获取属性列表)。
5、在网上看到有人这么评论这两个类的区别:XmlNode包含子节点,XmlElement只包含属性及其本身不含有子节点。但是我通过代码测试,发现即使是XmlElement,也可以通过ChildNodes来获取子节点列表。虽然在断点中断模式下,我并没有发现XmlElement有ChildNodes属性。举例如下:
//是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode
       //既是XmlNode 也是XmlElement   
           C#      //只是XmlNode

也就是元素节点可以相应转换为XmlElement,这样既可以使用XmlNode的功能,也可以使用它特有的对属性的操作方法。
任意节点都可以使用XmlNode,因为XmlNode是所有Node的父类。

=================================================================================

System.Xml.XmlNode System.Xml.XmlLinkedNode System.Xml.XmlElement从结构上讲.XmlElement是XmlNode 派生类. 所以两者比较没什么意义. 1.XmlNode 为抽像类, 不能直接实例化.

时间: 2024-08-24 02:24:36

XmlNode与XmlElement (2012-07-25 13:35:25)的相关文章

XmlNode与XmlElement的区别总结

原文链接:http://www.cnblogs.com/oilsun/archive/2012/07/07/2580427.html 今 天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement.这两个类的功能极其类似(因为我们一般都是在对 Element节点进行操作).上网搜罗了半天,千篇一律的答案.永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如 下:1.通过继承关系XmlElement继承自XmlLinkedNode又

Android实现下拉导航选择菜单效果【转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/07/31/2617488.html】

本文介绍在Android中如何实现下拉导航选择菜单效果.   关于下拉导航选择菜单效果在新闻客户端中用的比较多,当然也可以用在其他的项目中,这样可以很方便的选择更多的菜单.我们可以让我们的应用顶部有左右滑动或进行切换的导航菜单,也可以为了增强用户体验在应用中添加这样的下拉导航选择菜单效果. 关于它的实现原理,其实也是挺简单的,就是使用PopupWindow来进行展现,在显示时控制其高度并配置以相应的动画效果.在PopupWindow中我使用GridView来控制里面的菜单项,每个菜单项对应相应的

XmlNode和XmlElement区别

今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement.这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作).上网搜罗了半天,千篇一律的答案.永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如下:1.通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类.我们知道子类继承了父类所有的属性和方法,因此,XmlNode所拥

只查看ett.txt文件(共100行)内第25到35行的内容的八种解决方法

试题:只查看ett.txt文件(共100行)内第25到35行的内容 解答: 方法一:head -35 /data/ett.txt |tail -11 方法二:sed -n '25,35p' /data/ett.txt 方法三:grep -C5 30 /data/ett.txt 方法四:grep -A10 25 /data/ett.txt 方法五:grep -B10 35 /data/ett.txt 方法六:awk 'NR=25,NR==35' /data/ett.txt 方法七:awk 'NR>

关于XML中:XmlNode和XmlElement的涵义及不同之处

今天学习XML,遇到XmlNode和XmlElement俩个类,故有了下文的所述: 今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement.这两个类的功能极其类似(因为我们一般都是在对 Element节点进行操作).上网搜罗了半天,千篇一律的答案.永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如 下: 1.通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElemen

jpg" title="高凌风25岁高凌风25岁女儿私照曝光 弃学业进娱圈发展 _ 转载于本草百年养生堂

葛晓洁排行老三,父母离异后,她10岁时曾和高凌风见过面,从此音讯全无.男生美白小窍门高凌风经济能力好些后,不断透过亲友寻女,2010年,文洁因女儿大学毕业,终于答应父女重逢.葛晓洁与金友庄相处像朋友,都喊她"小金阿姨".高凌风说,13年来葛晓洁一点儿都不知道他挂念着她.因为文洁另有感情,又生了儿子,葛晓洁跟着阿姨与姨丈生活,不过妈妈和阿姨对她管教很严格. 63岁台湾一代歌王高凌风因罹患癌症不幸去世,很多明星听闻这一消息,都纷纷以不同方式表示哀悼.让我们一起了解下他的子女们 高凌风有过三

js 随机数 转 http://www.cnblogs.com/banbu/archive/2012/07/25/2607880.html

<script>   function GetRandomNum(Min,Max){   var Range = Max - Min;   var Rand = Math.random();   return(Min + Math.round(Rand * Range));   }   var num = GetRandomNum(1,10);   alert(num);   </script> var chars = ['0','1','2','3','4','5','6','7

【2012.07.11】最长回文 --马拉车算法

总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  5120000kB 描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 输入 一个文件一组数据每组输入为一行小写英文字符a,b,c...y,z组成的字符串S字符串长度len <= 110000 输出 一个整数x,表示该字符串中所包含的最长回文长度. 样例输入 aaaa -------------//忽视 分割线 下同

杭电OJ 2012 2014年9月25日11:58:03

素数判定 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 74351    Accepted Submission(s): 25941 Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数. Input 输入数据