ASP.NET XML

mac2022-06-30  123

一.DOM简介

1.什么是DOM

  XML:XML是一种跨语言,跨平台的数据存储格式,可以在任何两个应用程序间共享数据,这两个程序可能使用不同的语言编写,由不同的公司构建,运行在不同的操作系统上.

      XML本身是一个文本文件,用于存储数据的,有人把XML当成小型数据库来使用.

  DOM:Document Object Model简称为DOM,用W3C的话说,DOM是一种允许程序或脚本动态地访问更新文档内容,结构和样式的,独立于平台和语言的规范化接口.

     通俗的说,DOM就是一种规范.

  DOM的规范级别:

    1.DOM级别1(Level 1)

      DOM级别1于1998年10月1日成为W3C推荐标准.专注于HTML和XML文档模型.它含有文档导航和处理功能.

    2.DOM级别2(Level 2)

      DOM级别2规范发布于2000年11月13日.DOM级别2对DOM级别1添加了样式表对象模型,并定义了操作附于文档之上的样式信息的功能性.DOM级别2同时还定义了一个事件模型,并提供了对XML命名空间的支持.

    3.DOM级别3(Level 3)

      DOM级别3规定了内容模型(DTD和Schemas)和文档验证.同时规定了文档加载和保存,文档查看,文档格式化和关键事件.DOM级别3建立于DOM级别2之上.

2.DOM的作用和地位

  DOM的作用:DOM为编程语言提供一组与平台无关的类和接口(API),编程者可以使用DOM中的API来对XML进行增,删,改,查的操作.

  DOM的地位:DOM处在编程语言和XML文件之间.

 3.DOM模型

  使用DOM来解析XML文档,首先DOM解析器会把XML加载到内存,XML文件在内存中以对象树的形式存在,这个对象树模型就是DOM模型.

    使用ODM来解析XML文档时,XML中所有的信息在对象树中以树节点(Node)的形式存在.

    DOM树中的节点类型主要有五种:

      1.元素节点(Element):XML中的元素在DOM树中成为元素节点,节点类型(NodeType)为1;

      2.属性节点(Attribute):XML中的属性在DOM树中成为属性节点,节点类型(NodeType)为2;

      3.文本节点(Text):XML中的文本在DOM树中成为文本节点,节点类型(NodeType)为3;

      4.注释节点(Comments):XML中的注释在DOM树中成为注释节点,节点类型(NodeType)为8;

      5.文档节点(Docment):是DOM树的根节点,节点类型(NodeType)为9;

二. .NET中的DOM常用对象

  在.NET的System.Xml命名空间中包含了操作XML的类和接口,其中基于DOM操作XML的核心类如表所示:

.NET中基于DOM核心类 类名说明XmlDocument表示一个XML文档XmlNode表示XML文档中的单个节点XmlNodeList表示排序的节点集合XmlElement表示一个元素XmlAttribute表示一个属性XmlAttributeCollection表示元素节点的属性集合XmlText表示元素或属性的文本内容

  1.XmlNode类

      XmlNode是DOM最关键的一个类,它的实例表示一个DOM树中的一个节点.XmlNode类没有公共构造函数,这表示不能用new关键字创建XmlNode的实例.

       1)属性

XmlNode类常用属性及说明 属性说明Attributes

如果节点的类型是XmlNodeType.Element,该属性就返回包含元素特性的XmlAttributeCollection(派生于XmlNamedNodeMap),否则返回null.

ChildNodes获取节点中所有子节点的XmlNodeList.如果该节点没有子节点,该属性就返回一个空列表.FirstChild获取一个XmlNode,表示当前节点的第一个子节点.如果该节点没有子节点,就返回一个null.HasChildNode获取一个布尔值,表示该节点是否有子节点.如果有子节点,该布尔值就是true,否则就是false.InnerText表示一个字符串,其值把当前节点及其所有子节点的文本内容连接起来.InnerXml获取或设置当前节点的子内容标记.LastChild获取一个XmlNode实例,表示当前节点的最后一个子节点,如果没有这样的节点,就返回一个空引用.Name当在派生类中被重写时,对不同的节点类型以字符串形式返回节点的限定名称.NextSibling该属性返回XmlNode实例,它表示按照文档顺序与当前节点同级(即有相同的深度)的下一节点.如果不存在这样的节点,就返回一个空引用.NodeType当在派生类中被重写时,获取当前节点的类型,返回一个XmlNodeType值.OuterXml这个字符串属性递归获取当前节点及其所有子节点的XML标记.OwnerDocument获取节点所属的XmlDocument实例.如果节点本身是一个文档,该属性就是null.ParentNode

获取XmlNode的父节点,如果没有就返回null.

PreviousSibling获取与当前节点深度相同的前一个XmlNode,如果没有就返回null.Value获取或设置节点的值.

        2)方法

  方法用法AppendChild带一个XmlNode类型的参数(或其派生类型),该方法把参数添加到当前节点的子节点列表的末尾.返回值是所添加的节点.Clone对节点执行深复制(即包含所有的派生节点和属性).该方法没有参数,返回XmlNode副本,等价于CloneNode(true).CloneNode这是一个抽象方法,它复制当前节点.InsertAfter在给定引用节点的子节点列表中,在该引用节点的后面插入一个节点.该方法带两个XmlNode类型的参数:一个是要添加的子节点,另一个是引用节点.InsertBefore与InsertAfter类型,但新节点在引用节点的前面插入(除非引用节点为null,此时节点添加到子节点列表的最后).PrependChild把一个节点添加到该节点的子节点列表的开头.RemoveAll删除调用节点的所有子节点和/或特性.RemoveChild删除指定的子节点,该方法带一个XmlNode类型的参数,删除成功就返回该节点.ReplaceChild用一个新节点代替一个子节点,返回旧(被替换的)节点.

  2.XmlDocument类

      XmlDocument类派生自XmlNode类.其实例表示一个Xml文档对象.XmlDocument类有许多用途.它不仅可以执行DOM模型中所有外围结构的接口,还可以创建新节点.

        1)属性

XmlDocument的常用属性 属性说明DocumentElement(只读)返回组成DOM树中根的XmlElement.DocumentType(只读)把DOCTYPE声明(如果有)返回一个XmlDocumentType对象PreserveWhitespace

这个布尔属性控制着在执行Load,LoadXml和Save过程中是否保留空白.

如果在执行这些操作中的任何一个之前,该布尔属性是true,就保留空白.

        2)方法

XmlDocument的常用方法 方法说明CreateAttribute用给定的名称创建一个XmlAttribute节点.CreateElement创建一个XmlElement节点.CreateNode根据给出的类型,名称和命名空间信息,创建并返回一个XmlNode.CreateTextNode根据一个包含新节点中文本内容的字符串,创建并返回一个XmlText节点.CreateXmlDeclaration根据下面的参数创建一个XmlDeclaration节点.GetElementById返回一个匹配给定字符串ID参数的XmlElement.GetElementByTagName返回一个XmlNodeList,其中包含其名称匹配给定名称的所有子元素.Load加载一个XML文档,并解析它.LoadXml从字符串中加载XML文档.这个字符串参数由文档标记组成.Save把XML文档写到给定的位置上.

  3.XmlNodeList类

      XMLNodeList是一个节点集合类,其元素为XmlNode类型.XmlNodeList没有公共构造函数,因此不能创建和删除XmlNodeList类的实例.获得XmlNodeList实例最常用的方式是引用XmlNode的ChildNodes属性.

        1)属性

XmlNodeList的属性 属性说明Count获取XmlNodeList中的节点数ItemOf(只读)检索给定索引处的节点

 

 

XmlNodeList的方法 方法用法GetEnumerator该方法没有参数,返回一个IEnumerator实例.以支持在列表上执行foreach迭代.Item该方法带一个基于0的整数索引参数,返回列表中该索引所在位置的XmlNode.如果索引超出列表的范围,该方法就返回null.

 

 

 

 

XmlElement的常用属性 属性说明Attributes获取一个XmlAttributeCollection,其中包含该元素节点的所有属性.ClildNodes获取元素节点的所有子节点.(继承自XmlNode).HasAttributes获取一个boolean值,该值指示当前元素节点是否有任何属性.HasChildNodes获取一个值,该值指示节点是否有任何子节点.(继承自XmlNode).InnerText获取或设置节点及其所有子级的串连值.(重写XmlNode.InnerText).InnerXml获取或设置只表示此节点子级的标记.(重写XmlNode.InnerXml).IsEmpty

获取或设置一个布尔值.当该值为true时,元素就是空的,并以<name />缩写形式表示.如果元素是子内容或以完整形式<name><name/>表示,

则该属性返回false.如果这个属性设置为true,就删除它的所有子内容,因为这将指定该元素应为空.

LastChild获取元素节点的最后一个子级.(继承自XmlNode).Name获取元素节点的限定名.(重写XmlNode.Name).NextSibling获取这个元素节点后面的XmlNode,如果不存在这样的节点,该属性就返回null.NodeType获取当前元素节点的类型.(重写XmlNode.NodeTye).返回XmlNodeType.Element.OwnerDocument获取该元素节点所属的XmlDocument(重写XmlNode.OwnerDocument).PreviousSibling获取紧接在该元素节点之前的节点.(继承自XmlLinkedNode).Value获取或设置元素节点的值.(继承自XmlNode).

 

 

Xmlelement的常用方法 方法说明AppendChild将指定的节点添加到该节点的子节点列表的末尾.(继承自XmlNode).CloneNode

复制属性,并把副本返回为一个XmlNode实例.该方法带一个布尔参数(该参数为true时,会递归复制子内容,进行深复制,

该参数为false时,则仅复制元素).

GetAttribute返回指定属性的属性值.GetAttributeNode与GetAttribute类似(包括重载的参数列表),但如果找到匹配,返回类型是XmlAttribute,如果没有找到匹配,则返回null.GetElementsByTagName返回一个XmlNodeList,它包含与指定名称匹配的所有子代元素的列表.HasAttribute确定当前节点是否具有指定的属性.RemoveAll移除当前节点的所有指定属性和子级.不移除默认属性.(重写XmlNode.RemoveAll()).RemoveAttribute移除指定的属性.RemoveAttributeAt从元素中移除具有指定索引的属性节点.RemoveAttributeNode从元素中删除并返回XmlAttribute.RemoveChild移除指定的子节点.(继承自XmlNode).ReplaceChild用newChild节点替换子节点oldChild.(继承自XmlNode).SetAttribute设置指定属性的值.SetAttributeNode添加一个新XmlAttribute.

  5.XmlAttribute类

      XmlAttribute是System.Xml命名空间中最常用的DOM类之一.它也直接派生自XmlNode,是唯一适合于表示XML属性的类.

        1)属性

XmlAttribute的常用属性 属性含义Name把属性节点的限定名称返回为一个字符串.NodeType获取一个XmlNodeType枚举,其值为XmlNodeType.Attribute.NextSibling获取紧接在该节点之后的节点.(继承自XmlNode).OwnerDocument获取这个特性所属的XmlDocument.OwnerElement获取该属性所属的XmlElement.PreviousSibling获取紧接在该属性节点之前的节点.(继承自XmlNode).Value获取或设置节点的值.(重写XmlNode.Value).

        2)方法

          XmlAttribute类的Clone()方法可以创建此属性节点的一个副本.

  6.XmlAttributeCollection类

      XmlAttributeCollection表示可以按名称或索引访问的属性的集合,其元素为XmlAttribute类型.该类派生自XmlNameNodeMap类.

        1)属性

          这个类的最常用的属性是Count.这是一个只读整数属性,用于获取集合所包含的XmlAttribute节点数.

        2)方法

XmlAttributeCollection的常用方法 方法说明Append将指定的属性插入集合,并将其作为集合中的最后一个节点.GetEnumerator提供一个IEnumerator实例,以支持在映射内容上执行foreach的枚举.InsertAfter将指定属性直接插入到指定引用属性之后.InsertBefore将指定属性直接插入到指定引用属性之前.Item检索位于XmlNamedNodeMap中指定索引处的节点.(继承自XmlNamedNodeMap).Prepend将指定属性插入集合中,并将其作为集合的第一个节点.Remove从集合中移除指定的属性.RemoveAll从集合中移除所有属性.RemoveAt从集合中移除与指定的索引对应的属性.RemoveNamedItem从映射中删除指定的节点,该方法有两个重载形式,它们分别匹配GetNamedItem的两个不同版本.SetNamedItem

在集合中插入所提供的XmlNode实例.如果传送过来的节点已经在映射中(就是修改节点的内容),

就返回旧(被替代的)节点.如果节点是新的,就返回null.

  7.XmlText类

      XmlText表示元素节点或属性节点的文本内容.该类没有构造方法,但可以使用XmlNode的CreateTextNode()方法得到实例.

        1)属性

          XmlText的Length属性可以获取数据的长度(以字符为单位).(从XmlCharacterData继承).XmlText的Value属性用于得到文本节点的位置.

转载于:https://www.cnblogs.com/huangkeming-web/p/3494842.html

最新回复(0)