XML学习总结

1、XML结构


2、XmlNodeType值为一个枚举类型:


假设我们对一个XML文件进行遍历,不推断节点是否为Element类型。就会将文本节点遍历出来,出现#test。

3、XmlElement和XmlNode的差别:(摘自CSDN论坛)

(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的父类。

4、Node和Element的差别:

在DOC(文本对象模型)中是存在Node概念。而Element是在XML中的概念,但DOC中是能够讲Node->Element。

换言之:一个Node不一定是一个Element。可是一个Element一定是一个Node。

5、遍历一个xml文件里全部节点。

     private void GetAllNode(TreeList tlTree, TreeListNode pTreeNode, XmlNode xmlNode)
        {
            foreach (XmlNode pChildNode in xmlNode.ChildNodes)
            {
                if (pChildNode.NodeType.Equals(XmlNodeType.Element))         //节点类型推断
                {
                    TreeListNode pTreeNodeChild = tlTree.AppendNode(new object[] { pChildNode.Name }, pTreeNode);
                    if (pChildNode.HasChildNodes)
                    {
                        GetAllNode(tlTree, pTreeNodeChild, pChildNode);
                    }
                }
            }
        }


原文地址:https://www.cnblogs.com/yangykaifa/p/6782073.html