XML 相关总结
经过昨天的学习,了解到DOM只是提供了一种解析XML的方式(接口),而DOM的接口与语言无关。对DOM接口的实现有微软的MSXML,Xerces-C(Apache),Java的XML4J等。下面对DOM和MSXML的几个接口分别介绍(网上资料,经整理):
一.DOM的四个基本接口
在DOM接口规范中,有四个基本的接口:Document,Node,NodeList以及NamedNodeMap。在这四个基本接口中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,像Documet,Element,Attribute,Text,Comment等接口都是从Node接口继承过来的。NodeList接口是一个节点的集合,它包含了某个节点中的所有子节点。NamedNodeMap接口也是一个节点的集合,通过该接口,可以建立节点名和节点之间的一一映射关系,从而利用节点名可以直接访问特定的节点。下面将对这四个接口分别做一些简单的介绍。
1、Document接口
Document接口代表了整个XML/HTML文档,因此,它是整棵文档树的根,提供了对文档中的数据进行访问和操作的入口。
由于元素、文本节点、注释、处理指令等都不能脱离文档的上下文关系而独立存在,所以在Document接口提供了创建其他节点对象的方法,通过该方法创建的节点对象都有一个ownerDocument属性,用来表明当前节点是由谁所创建的以及节点同Document之间的联系。
在DOM树中,Document节点是DOM树中的根节点,也即对XML文档进行操作的入口节点。通过Docuemt节点,可以访问到文档中的其他节点,如处理指令、注释、文档类型以及XML文档的根元素节点等等。另外,在一棵DOM树中,Document节点可以包含多个处理指令、多个注释作为其子节点,而文档类型节点和XML文档根元素节点都是唯一的。
关于Document接口的IDL(InterfaceDefinitionLanguage接口定义语言)定义和其中一些比较常用的属性和方法的详细介绍可以在MSDN中找到。
2、Node接口
Node接口在整个DOM树中具有举足轻重的地位,DOM接口中有很大一部分接口是从Node接口继承过来的,例如,Element、Attr、CDATASection等接口,都是从Node继承过来的。在DOM树中,Node接口代表了树中的一个节点。
3、NodeList接口
NodeList接口提供了对节点集合的抽象定义,它并不包含如何实现这个节点集的定义。NodeList用于表示有顺序关系的一组节点,比如某个节点的子节点序列。另外,它还出现在一些方法的返回值中,例如GetNodeByName。
在DOM中,NodeList的对象是"live"的,换句话说,对文档的改变,会直接反映到相关的NodeList对象中。例如,如果通过DOM获得一个NodeList对象,该对象中包含了某个Element节点的所有子节点的集合,那么,当再通过DOM对Element节点进行操作(添加、删除、改动节点中的子节点)时,这些改变将会自动地反映到NodeList对象中,而不需DOM应用程序再做其他额外的操作。
NodeList中的每个item都可以通过一个索引来访问,该索引值从0开始。
4、NamedNodeMap接口
实现了NamedNodeMap接口的对象中包含了可以通过名字来访问的一组节点的集合。不过注意,NamedNodeMap并不是从NodeList继承过来的,它所包含的节点集中的节点是无序的。尽管这些节点也可以通过索引来进行访问,但这只是提供了枚举NamedNodeMap中所包含节点的一种简单方法,并不表明在DOM规范中为NamedNodeMap中的节点规定了一种排列顺序。
NamedNodeMap表示的是一组节点和其唯一名字的一一对应关系,这个接口主要用在属性节点的表示上。与NodeList相同,在DOM中,NamedNodeMap对象也是“live”的。
二.MSXML的几个重要接口
从理论上说,根据XML的格式定义,我们可以自己编写一个XML的语法分析器,但实际上微软已经给我们提供了一个XML语法解析器,即一个叫做MSXML.DLL的动态链接库,实际上它是一个COM(ComponentObjectModel)对象库,里面封装了进行XML解析时所需要的所有对象。因为COM是一种以二进制格式出现的和语言无关的可重用对象,所以你可以用任何语言(比如VB,VC,DELPHI,C++Builder甚至是脚本语言等等)对它进行调用,在你的应用中实现对XML文档的解析。
MSXML.DLL所包括的主要COM接口有:
1.IXMLDOMDocument(Document接口)
DOMDocument对象是XMLDOM的基础,你可以利用它所暴露的属性和方法来浏览、查询和修改XML文档的内容和结构。DOMDocument表示了树的顶层节点,它实现了DOM文档的所有的基本方法,并且提供了额外的成员函数来支持XSL和XSLT。它创建了一个文档对象,所有其他的对象都可以从这个文档对象中得到和创建。
2.IXMLDOMNode(Node接口)
IXMLDOMNode是文档对象模型(DOM)中的基本对象,元素、属性、注释、过程指令和其他的文档组件都可以认为是IXMLDOMNode。事实上,DOMDocument对象本身也是一个IXMLDOMNode对象。
3.IXMLDOMNodeList
IXMLDOMNodeList实际上是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中立刻反映出来,可以通过"for.循环"结构来遍历所有的节点。
4.IXMLDOMParseError
IXMLDOMParseError接口用来返回在解析过程中所出现的详细的信息,包括错误号、行号、字符位置和文本描述。
在具体应用时可以用DOMDocument的Load方法来装载XML文档,用IXMLDOMNode的selectNodes(查询的结果有多个,得到存放搜索结果的链表)或selectSingleNode(查询的结果有一个,在有多个的情况下返回找到的第一个节点)方法进行查询,用createNode和appendChild方法来创建节点和追加节点,用IXMLDOMElement的setAttribute和getAttribute方法来设置和获得节点的属性。
三.Document属性和方法
Document 属性
|
async
|
属性说明
|
async 属性表示是否允许异步的下载。
|
基本语法
|
boolValue = XMLDocument.async;
XMLDocument.async = boolValue;
|
语法说明
|
布尔值是可擦写的(read/write),如果准许异步下载,值为True;反之则为False。
|
使用范例
|
xmlDoc.async = "false";
alert(xmlDoc.async);
|
attributes
|
属性说明
|
传回目前节点的属性列表
|
基本语法
|
objAttributeList = xmlNode.attributes;
|
语法说明
|
传回一个物件。如果此节点不能包含属性,则传回空值。
|
使用范例
|
objAttList = xmlDoc.documentElement.attributes;
alert(objAttList);
|
childNodes
|
属性说明
|
传回一个节点清单,包含该节点所有可用的子节点。
|
基本语法
|
objNodeList=node.childNodes;
|
语法说明
|
传回一个物件。假如这节点没有子节点,传回null。
|
使用范例
|
objNodeList = xmlDoc.childNodes;
alert(objNodeList);
|
doctype
|
属性说明
|
传回文件型态节点,包含目前文件的DTD。这节点是一般的文件型态宣告,例如,节点<!DOCTYPE EMAIL SYSTEM "LstA_2.dtd">,名为EMAIL 的节点物件会被传回。
|
基本语法
|
objDocType=xmlDocument.doctype;
|
语法说明
|
传回一个对象,这个属性是只读的。假如这文件不包含DTD,会传回null。
|
使用范例
|
objDocType = xmlDoc.doctype;
alert(objDocType.nodeName);
|
documentElement
|
属性说明
|
确认XML 文件的根(Root)节点。
|
基本语法
|
objDoc=xmlDocument.documentElement;
|
语法说明
|
返回一个在单一根文件元素中包含数据的对象。此属性可读/写,如果文件中不包含根节点,将传回null。
|
使用范例
|
objDocRoot = xmlDoc.documentElement;
alert(objDocRoot);
|
firstChild
|
属性说明
|
确认在目前节点中的第一个子元素。
|
基本语法
|
objFirstChild = xmlDocNode.firstChild ;
|
语法说明
|
此属性只读且会传回一对象,如果节点中没有包含第一个子元素,将传回null。
|
使用范例
|
objFirstChild = xmlDoc.documentElement.firstChild;
alert(objFirstChild);
|
implementation
|
属性说明
|
DOM 应用程序能使用其它实作中的对象。implementation 属性确认目前XML 文件的DOMimplementation 对象。
|
基本语法
|
objImplementation = xmlDocument.implementation;
|
语法说明
|
此属性只读且传回一个对象。
|
使用范例
|
objImp = xmlDoc.implementation;
alert(objImp);
|
lastChild
|
属性说明
|
确认目前节点中最后的子元素。
|
基本语法
|
objLastChild = xmlDocNode.lastChild;
|
语法说明
|
此属性只读且传回一个对象。如果节点中没有包含最后子元素,将传回null。
|
使用范例
|
objLastChild = xmlDoc.documentElement.lastChild;
alert(objLastChild);
|
nextSibling
|
属性说明
|
在目前文件节点的子节点列表中传回下一个兄弟节点。
|
基本语法
|
objNextSibling = xmlDocNode.nextSibling;
|
语法说明
|
此属性是只读且传回一个对象。如果节点中没有包含其它的相关节点,会传回null。
|
使用范例
|
objSibling= xmlDoc . documentElement. childNodes.item(1) . nextSibling;
alert(objSibling);
|
nodeName
|
属性说明
|
传回代表目前节点名称的字符串。
|
基本语法
|
strNodeName = xmlDocNode.nodeName ;
|
语法说明
|
传回一个字符串。这个属性是只读的,传回元素名称、属性或实体参照。
|
使用范例
|
strNodeName = xmlDoc.documentElement.nodeName;
alert(strNodeName);
|
nodeType
|
属性说明
|
辨识节点的DOM 型态
|
基本语法
|
numNodeType = xmlDocNode.nodeType ;
|
语法说明
|
此属性只读且传回一个数值
有效的数值符合以下的型别:
1-ELEMENT
2-ATTRIBUTE
3-TEXT
4-CDATA
5-ENTITY REFERENCE
6-ENTITY
7-PI (processing instruction)
8-COMMENT
9-DOCUMENT
10-DOCUMENT TYPE
11-DOCUMENT FRAGMENT
12-NOTATION
|
使用范例
|
numNodeType = xmlDoc.documentElement.nodeType;
alert(numNodeType);v</DIV></TD></TR></TBODY></TABLE>
<DIV class=content>
|
nodeValue
|
属性说明
|
传回指定节点相关的文字。这并非一个元素中数据的值,而是与一个节点相关且未解析的文字,就像一个属性或者一个处理指令
|
基本语法
|
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
xml读写总结摘录了一些网上对c#读取xml的基本方法,方便查找
asp.net 操作xml总结《========里面总结了本人学习asp.net操作xml的总结
Hibernate.cfg.xml配置总结
里面包括:1、封装好的XML文件的读和写工程;2、tinyxml库;3、xmlPPT讲解。
xml基本知识,两种常见的xml约束,三种常见的xml解析方式
borland c++ builder 6 xml处理总结,xml文件处理的控件使用
linq_to_xml总结.doc
xml总结.pdf
XML 解析技术和文档定义形式 XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。在进行 XML 开发时,需要了解 XML 的解析技术和文档定义形式。下面将详细介绍 XML 解析技术和文档定义形式。 ...
xml的学习总结,对于xml的刚入门者来说,很有帮助,希望能帮到大家。
XML解析总结归纳 总结了java常用的xml解析常用
NULL 博文链接:https://lifeinsun.iteye.com/blog/688439
本文是对TinyXml工具的一些知识点的理解。
使用java工具xml2axml.jar反编译AndroidManafest文件 通过xml2axml.jar工具反编译AndroidManafest文件 还原AndroidManafest.xml详细过程: 1、获取到apk 2、解压获取里面的AndroidManifest.xml文件 3、在xml2axml....
xml的简单技术要点,便于面试使用。包括dtd、xml schema、xslt
xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作
Ajax 解析XML+json总结,很好的资源哦。欢迎大家来下载。
XML发展历史概述 XML文档组成元素 XML Schema组成元素 XML相关API
自己看视频进行总结,希望能和大家一起学习分享!
郑州大学 软件学院 xml 期末总结