关于XML中:XmlNode和XmlElement的涵义及不同之处
今天学习XML,遇到XmlNode和XmlElement俩个类,故有了下文的所述:
今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement。这两个类的功能极其类似(因为我们一般都是在对 Element节点进行操作)。上网搜罗了半天,千篇一律的答案。永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如 下:
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属性。举例如下:
<Book img="aspnet.jpg"> //是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode
<Name> //既是XmlNode 也是XmlElement
C# //只是XmlNode
</Name>
</Book>
也就是元素节点可以相应转换为XmlElement,这样既可以使用XmlNode的功能,也可以使用它特有的对属性的操作方法。
任意节点都可以使用XmlNode,因为XmlNode是所有Node的父类。
这只是我个人试验后的戳见,有不对的地方,或者是有需要补充的地方希望前辈们指正。
转载自http://bbs.csdn.net/topics/330203920
创建XML的文件名为:cjp.xml
<?xml version="1.0" encoding = "utf-8"?> //文档头,文档头前面不能什么的注释或代码
<lanou> //开标签<名字> 这里的lanou是根节点,根节点有且只有一个
<!-- 注释:老师数组子节点 --> //注释形式: <!-- 注释的内容 -->
<teachers> //<teachers>子节点,里面有多个<teacher>节点,所以我们可以理解为teachers数组
<!--每个老师 -->
<teacher>
<!-- 老师的属性 -->
<name>二浩</name>
<age>34</age>
</teacher>
<teacher>
<name>易慧云</name>
<age>31</age>
<class>39</class>
</teacher>
<teacher>
<name>徐明新</name>
<age>30</age>
<wife>
<name>莉娜</name>
</wife>
</teacher>
</teachers>
</lanou> //闭标签</ 名字>
using UnityEngine;
using System.Collections;
//处理XML结构的文档
//1.引入库
using System.Xml;
下面是在unity里面写得代码
public class DataManager : MonoBehaviour {
//函数
void Load()
{
//1.使用XML库内的XmlDocument对象
XmlDocument xmldoc = new XmlDocument ();//能吧xml库内的文档给读取出来
//使用xmldoc对象加载xml结构的文档字符串
xmldoc.LoadXml ("<?xml version=\"1.0\" encoding=\"utf-8\" ?> <lanou>蓝鸥</lanou>");
TextAsset ta = Resources.Load ("cjp") as TextAsset;
xmldoc.LoadXml (ta.text);
// xmldoc.Load ("Resources/cjp.xml");
//每个XML文档内有且只有一个根节点
XmlElement root = xmldoc.DocumentElement;
//找到所有的teacher 列表 第一个
// XmlNodeList list = xmldoc.SelectNodes ("//teacher[1]");
// XmlNodeList list = xmldoc.SelectNodes ("//teacher[wife]");
// XmlNodeList list = xmldoc.SelectNodes ("//teacher[age = 30]");
// XmlNodeList list = xmldoc.SelectNodes ("//teacher[lase()]");
//最后一个
// foreach (XmlNode node in list) {
// Debug.Log (node.Name + ":" + node.InnerText);
//
}
Debug.Log (root.InnerText);
// Debug.Log (root.Name);
}
void Start () {
Load ();
}
关于XML中:XmlNode和XmlElement的涵义及不同之处的更多相关文章
- 读取XML文件(XmlNode和XmlElement区别)
XmlNode和XmlElement区别.这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作). 1.通过继承关系XmlElement继承自XmlLinkedNode又继承自Xml ...
- Android XML中引用自定义内部类view的四个why
今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...
- XmlNode和XmlElement区别
今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement.这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作).上网搜罗了半天,千篇一律的答 ...
- Xml中SelectSingleNode方法,xpath查找某节点用法
Xml中SelectSingleNode方法,xpath查找某节点用法 最常见的XML数据类型有:Element, Attribute,Comment, Text. Element, 指形如<N ...
- [转]XML中元素(Element)与节点(Node)的区别
前言: element是特殊的node 一段纯文本即text-node也是node 但不是element w3c的原话是 A node can be an element node, an attri ...
- XmlNode与XmlElement的区别总结
原文链接:http://www.cnblogs.com/oilsun/archive/2012/07/07/2580427.html 今 天在做ASP.NET操作XML文档的过程中,发现了两个类:Xm ...
- (转载)读取xml中的指定节点的值
/// <summary> /// 读取xml中的指定节点的值 /// </summary> private st ...
- 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中
List<Person> list = new List<Person> { new Person{Name="张三",Age=20,Email=" ...
- Xml中SelectSingleNode方法中的xpath用法
https://blog.csdn.net/wf520pb/article/details/2644549 最常见的XML数据类型有:Element, Attribute,Comment, Text. ...
随机推荐
- VB中PictureBox控件使用教程
PictureBox对象可以说是任何对象的原始型态,它可以加载图片.显示文字.画图外,它还能与Frame对象一样,在自己本身里头加载其它的对象而自成一个小群组,用PictureBox可以仿真出任何对象 ...
- Best way to add Gradle support to IntelliJ Project
1, Touch build.gradle in root project folder, and use plugins: apply plugin: 'idea' apply plugin: 'j ...
- 实现放大转场动画 from cocoachina
原文1:http://www.cocoachina.com/ios/20160318/15714.html 原文2:http://ningandjiao.iteye.com/blog/2049105 ...
- Java笔记:修饰符
Synchronized 修饰符 Synchronized 关键字声明的方法同一时间只能被一个线程访问.Synchronized 修饰符可以应用于四个访问修饰符. 实例 public synchron ...
- webstorm添加*.vue文件代码提醒支持webstorm支持es6vue里支持es6写法
本文转自:http://www.lred.me/2016/01/07/webstorm%E6%B7%BB%E5%8A%A0-vue%E6%96%87%E4%BB%B6%E6%94%AF%E6%8C%8 ...
- AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
好了,现进入正题,在 AngularJs 实现动态(懒)加载主要是依赖于3个主JS文件和一段依赖的脚本. 实现的过程主要是引用3个主要的JS文件 <script src="angula ...
- ORACLE 迁移MYSQL 随笔
1.把服务器上的ORALCE 数据库导成DMP,然后导入本机的临时库 2.先把ORACLE 表中的DATE 改为TIMESTAMP; a.先建立个表 create table type_table_i ...
- JavaScript常用字符串操作方法总结
1.判断是否为字符串:typeof() var str = 'abcd'; typeof(str); //string 2.获取字符串的长度:length var str = '123456789 ...
- Riemann映射定理
单复变函数几何理论最高的成就我想应该属于Riemann映射定理吧! Riemann映射定理:$\mathbb C$中任意边界多余一个点的单连通域$D$都与单位圆盘$B(0,1)$等价,即存在着$D$上 ...
- WPF之Binding初探
初学wpf,经常被Binding搞晕,以下记录写Binding的基础. 首先,盗用张图.这图形象的说明了Binding的机理. 对于Binding,意思是数据绑定,基本用法是: 1.在xmal中使用 ...