zoukankan      html  css  js  c++  java
  • 关于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 ();     

              }             

  • 相关阅读:
    Java连接Mysql数据库异常:Public Key Retrieval is not allowed
    java8的时间段比较处理工具类TimeUtils
    MAVEN最常用的远程仓库
    maven的settings.xml配置阿里云中央仓库
    idea如何将java程序打包成exe可执行文件
    FakerUtil
    Golang内存逃逸是什么?怎么避免内存逃逸?
    10个高效Linux技巧及Vim命令对比[转]
    进程间8种通信方式详解
    基于openresty的URL 断路器/熔断器 -- URL-fuse
  • 原文地址:https://www.cnblogs.com/zhaolaosan/p/4212978.html
Copyright © 2011-2022 走看看