ASP.NET XML

一.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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值