XML数据接口DOM入门介绍和常用对象

From:http://soft.zdnet.com.cn/software_zone/2007/1004/535320.shtml

1、简介
  xmlDOM被设计为可用于任何语言和任何操作系统。借助DOM,程序员可以创建xml文档、遍历其结构,增、改、删其元素。DOM将整个xml文档视作一棵树,文档级的元素是树的根

2.结构:

举一实例

分析:

Document节点:即文档对象,树的最高节点,对整个文档进行操作的入口

Element和Attribute节点:这些结点对象是对整个文档进行操作的入口

Text节点类型,Text对象表达了元素或者属性的文本内容,Text节点不再包含任何子节点

集合索引:对节点按指定方式进行遍历,索引参数从0开始

3.Document对象

属性:

async 属性

作 用

async 属性表示是否允许异步的下载。
基本语法

boolValue =xmlDocument.async;xmlDocument.async = boolValue;

说 明

布尔值是可擦写的(read/write),如果准许异步下载,值为True;反之则为False。

范 例

xmlDoc.async="false";
alert(xmlDoc.async);

attribute 属性 传回目前节点的属性列表。 objAttributeList =xmlNode.attributes;

传回一个物件。如果此节点不能包含属性,则传回空值。

objAttList=xmlDoc.documentElement.attributes;
alert(objAttList);

childNodes 属性 传回一个节点清单,包含该节点所有可用的子节点。 objNodeList=node.childNodes;

传回一个物件。假如这节点没有子节点,传回null。

objNodeList=xmlDoc.childNodes;
alert(objNodeList);

doctype 属性
传回文件型态节点,包含目前文件的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

parseError 属性 传回一个DOM 解析错误对象,此对象描述最后解析错误的讯息。 objParseErr =xmlDocument.parseError;

此属性是只读的。如果没有错误发生,将传回0。

objParseErr=xmlDoc.parseError;
alert(objParseErr);

previousSibling 属性
传回目前节点之前的兄弟节点。
objPrevSibling =xmlDocument.previousSibling;

传回一个对象,这个属性是只读的。若该节点没有包含前面的兄弟节点,会传回null。

objPrevSibling=
xmlDoc.documentElement.childNodes.item(3).previousSibling
alert(objPrevSibling);

readyState 属性
传回xml文件资料的目前状况。
intState =xmlDocument.readyState;


这个属性是只读的,传回值有以下的可能:

0-UNINITIALIZED:xml对象被产生,但没有任何文件被加载。
1-LOADING:加载程序进行中,但文件尚未开始解析。
2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效。
3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有效但只读的。
4-COMPLETED:文件已完全加载,代表加载成功。
 

alert("ThereadyStatepropertyis"+xmlDoc.readyState);

url 属性
传回最近一次加载xml文件的URL。
strDocUrl =xmlDocument.url;

这个属性是只读的,传回最近一次加载成功文件的URL,若文件仅存在主存储器中(表示该文件并非由外部档案加载),则传回null。

alert(xmlDoc.url);

validateOnParse 属性
告诉解析器文件是否有效。
boolValidate=xmlDocument.validateOnParse;
xmlDocument.validateOnParse=boolValidate;

此属性是可擦写的。如果传回值为true,表示文件被解析时被确认是有效的。如果传回false,表示文件是无效的,并被认为只是标准格式的(well-formed)文件。

xmlDoc.validateOnParse=true;
alert(xmlDoc.validateOnParse);

方法:

abort 方法取消一个进行中的异步下载 xmlDocument.abort();

如果这个方法在异步下载时被呼叫,所有的解析动作会停止,而且在内存中的文件会被释放。

xmlDocument

createAttribute 方法 建立一个指定名称的属性。 xmlDocument.createAttribute(name);

name 是被建立属性的名称。

objNewAtt=xmlDoc.createAttribute("encryption");
alert(objNewAtt.xml);

createCDATASection 方法
作 用

xmlDocument.createCDATASection(data);

date 是一个字符串,且包含了被置放在CDATA 的资料。

objNewCDATA=xmlDoc.createCDATASection("ThisisaCDATASection");
alert(objNewCDATA.createComment 方法
xmlDocument.createComment(data);

data 是一个字符串,且包含了被置放在批注的资料。

objNewComment=xmlDoc.createComment("Thisisacomment");
alert(objNewComment.createDocumentFragment 方法
建立一个空的文件片断对象。
xmlDocument.createDocumentFragment();

一个新的文件片断被建立,但没有加到文件树中。要加入片断到文件树中,必须使用插入方法,例如insertBefore、replaceChild 或appendChild。

objNewFragment=xmlDoc.createDocumentFragment();
alert(objNewFragment.createElement 方法
建立一个指定名称的元素。
xmlDocument.createElement(tagName);

tagName 是一个区分大小写的字符串来指定新元素名称。

objNewElement=xmlDoc.createElement("TO");
alert(objNewElement.createEntityReference 方法
建立一个参照到指定名称的实体。
xmlDocument.createEntityReference(name);

name 是一个区分大小写的字符串,来指定新实体参照的名称。一个新的实体参照被建立,但是并没有被加到文件树中。若要将实体参照加到文件树中,必须使用一种插入方法,例如:insertBefore,replaceChild,或appendChild。

objNewER=xmlDoc.createEntityReference("eRef");
alert(objNewER.createNode 方法
建立一个指定型态、名称,及命名空间的新节点。
xmlDocument.createNode(type,name,nameSpaceURI);

type 用来确认要被建立的节点型态,name 是一个字符串来确认新节点的名称,命名空间的前缀则是选择性的。nameSpaceURI 是一个定义命名空间URI 的字符串。如果前缀被包含在名称参数中,此节点会在nameSpaceURI 的内文中以指定的前缀建立。如果不包含前缀,指定的命名空间会被视为预设的命名空间。

objNewNode=xmlDoc.createNode(1,"TO","");
alert(objNewNode.createProcessingInstruction 方法
建立一个新的处理指令,包含了指定的目标和数据
xmlDocument.createProcessingInstruction(target,data);

target 是表示目标、名称或处理指令的字符串。Data 是表示处理指令的值。一个新的处理指令被建立,但是并没有加到文件树中。要把处理指令加到文件树中,必须使用插入方法,例如:insertBefore、replaceChild,或是appendChild。

objNewPI=xmlDoc.createProcessingInstruction(‘xml’,‘version="1.0"’);
alert(objNewPI.xml);

createTextNode 方法
建立一个新的text 节点,并包含指定的xmlDocument.createTextNode(data);

data 是一个代表新text 节点的字符串。一个新的text 节点被建立,但是没有加到文件树中。若要将节点加到文件树中,必须使用插入方法,例如:insertBefore,replaceChild或appendChild。

objNewTextNode=xmlDoc.createTextNode("Thisisatextnode.");
alert(objNewTextNode.getElementsByTagName 方法
传回指定名称的元素集合。
objNodeList =xmlDocument.getElementsByTagName(tagname);

tagname 是一个字符串,代表找到的元素卷标名称。使用tagname "*"传回文件中所有找到的元素。

xmlDoc.getElementsByTagName("*");
alert(objNodeList.item(1).xml);

load 方法 表示从指定位置加载的文件。 xmlDocument.load(url);

url 包含要被加载档案的URL 的字符串。假如文件加载成功,传回值即为true。若加载失败,传回值为false。

boolValue=xmlDoc.load("LstA_1.xml");
alert(boolValue);

loadxml方法
加载一个xml文件或字符串的片断。
xmlDocument.loadxml(xmlString);

xmlString 是包含xml文字码的字符串。

xmlString="<GREETING><MESSAGE>Hello!</MESSAGE></GREETING>";
boolValue=xmlDoc.loadxmlString);
alert(boolValue);

nodeFromID 方法
传回节点ID 符合指定值的节点。
xmlDocumentNode =xmlDocument.nodeFromID(idString);

idString 是一个包含ID 值的字符串。符合的节点必定是ID 型态。若符合,将传回一个对象;若操作失败,则传回null。

objDocumentNode=xmlDoc.nodeFromID("TO");
alert(objDocumentNode);

selectNodes 方法 传回所有符合提供样式(pattern)的节点。 objDocumentNodeList =xmlDocumentNode.selectNodes(patternString);

patternString 为一包含XSL 样式的字符串。此方法会传回节点清单对象,包含符合样式的节点。如果没有符合的节点,则传回空的清单列表。

xmlDoc.selectNodes("/");
alert(objNodeList.item(0).xml);

4.Node对象

Node对象表示树中的一个节点

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-ENTITYREFERENCE
6-ENTITY
7-PI(processinginstruction)
8-COMMENT
9-DOCUMENT
10-DOCUMENTTYPE
11-DOCUMENTFRAGMENT
12-NOTATION
 

numNodeType=xmlDoc.documentElement.nodeType;
alert(numNodeType);

nodeValue 属性
传回指定节点相关的文字。这并非一个元素中数据的值,而是与一个节点相关且未解析的文字,就像一个属性或者一个处理指令。
varNodeValue =xmlDocNode.nodeValue;

传回的文字代表以节点的nodeType 属性为主的型态值。(请参考附录中的nodeType 属性。)因为节点型态可能是几种数据型态中的一种,传回值也因此有差异。传回null 的节点型态有:DOCUMENT、ELEMENT、DOCUMENT TYPE、DOCUMENT FRAGMENT、ENTITY、ENTITY REFERENCE,和NOTATION。此属性可擦写。

varNodeValue=xmlDoc.documentElement.nodeValue;
alert(varNodeValue);

ondataavailable 属性
指定一个事件来处理ondataavailable 事件。
xmlDocNode.ondataavailable = value;

此属性是唯写,允许文件作者一旦数据为可用,即可尽快的使用数据来运作。

xmlDoc.ondataavailable=alert("Dataisnowavailable.");

onreadystatechange 属性
指定一个事件来处理onreadystatechange 事件。这个事件能辨识readyState 属性的改变。
xmlDocNode.onreadystatechange = value;

此属性是唯写的,允许文件作者指定当readyState 属性改变时呼叫事件。

xmlDoc.onreadystatechange=
alert("ThereadyStatepropertyhaschanged.");

xml属性 传回指定节点的xml描述和所有的子节点。 xmlValue =xmlDocumentNode.xml;

此属性是只读的。

xmlValue=xmlDoc.documentElement.xml;
alert(xmlValue);

AppendChild 方法 加上一个节点当作指定节点最后的子节点。 xmlDocumentNode.appendChild(newChild);

newChild 是附加子节点的地址。

docObj=xmlDoc.documentElement;
alert(docObj.xml);
objNewNode=docObj.appendChild(xmlDoc.documentElement.firstChild);
alert(docObj.cloneNode 方法
xmlDocumentNode.cloneNode(deep);

deep 是一个布尔值。如果为true,此节点会复制以指定节点发展出去的所有节点。如果是false,只有指定的节点和它的属性被复制。

currNode=xmlDoc.documentElement.childNodes.item(1);
objClonedNode=currNode.cloneNode(1);
alert(objClonedNode.haschildnodes 方法 如果指定的节点有一个或更多子节点,传回值为true。 xmlDocumentNode.hasChildNodes() ;

如果此节点有子节点传回值为true,否则传回false 值。

xmlDoc.documentElement.hasChildNodes();
alert(boolValue);

insertBefore 方法
在指定的节点前插入一个子节点。
objDocumentNode =xmlDocumentNode.insertBefore(newChild,refChild);

newChild 是一个包含新子节点地址的对象,refChild 是参照节点的地址。新子节点被插到参照节点之前。如果refChild 参数没有包含在内,新的子节点会被插到子节点列表的末端。

objRefNode=xmlDoc.documentElement;
alert(xmlDoc.xml);
objNewNode=xmlDoc.createComment("Thisisacomment");
xmlDoc.insertBefore(objNewNode,objRefNode);
alert(parsed 方法
会验证该指定的节点(node)及其衍生的子节点(descendants)是否已被解析过。
xmlDocumentNode.parsed();

如果全部的节点都已经被解析过了,则传回值为ture;如果有任何一个节点尚未被解析,传回值则为false。

currNode=xmlDoc.documentElement.childNodes.item(0);
boolValue=currNode.parsed();
alert(boolValue);

removeChild 方法
会将指定的节点从节点清单中移除。
xmlDocumentNode.removeChild(oldChild);

oldChild 为一个包含要被移除的节点对象。

objRemoveNode=xmlDoc.documentElement.childNodes.item(3);
alert(xml);
xmlDoc.documentElement.removeChild(objRemoveNode);
alert(xml);

replaceChild 方法
置换指定的旧子节点为提供的新子节点。
xmlDocumentNode.replaceChild(newChild,oldChild);

newChild 为包含新子节点的对象。如果此参数为null,则此旧子节点会被移除而不会被取代。oldChild 为包含旧子节点的对象。

objOldNode=xmlDoc.documentElement.childNodes.item(3);
objNewNode=xmlDoc.createComment("I'vereplacedtheBCCelement.");
alert(xml);
xmlDoc.documentElement.replaceChild(objNewNode,objOldNode);
alert(selectSingleNode 传回第一个符合样式的节点。
传回第一个符合样式的节点。
xmlDocumentNode.selectSingleNode(patternString);

patternString 为一包含XSL 样式的字符串。此方法会传回第一个符合的节点对象,如果没有符合的节点,则传回null。

objNode=xmlDoc.selectSingleNode("EMAIL/BCC");
alert(objNode.transformNode 方法
使用提供的样式表来处理该节点及其子节点。
strTransformedDocument =xmlDocumentNode.transformNode(stylesheet);

stylesheet 为一xml文件或是片断包含负责节点转换工作的XSL 元素。此方法会传回一包含转换结果的字符串。

varstyle=newActiveXObject("Microsoft.xmlDOM");
style.load("LstA_49.xsl");
strTransform=xmlDoc.transformNode(style.documentElement); alert(strTransform);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇