XML 相关总结[转载]

XML 相关总结
 
经过昨天的学习,了解到DOM只是提供了一种解析XML的方式(接口),而DOM的接口与语言无关。对DOM接口的实现有微软的MSXML,Xerces-C(Apache),Java的XML4J等。下面对DOM和MSXML的几个接口分别介绍(网上资料,经整理):
一.DOM的四个基本接口
DOM接口规范中,有四个基本的接口:DocumentNodeNodeList以及NamedNodeMap。在这四个基本接口中,Document接口是对文档进行操作的入口,它是从Node接口继承过来的。Node接口是其他大多数接口的父类,像DocumetElementAttributeTextComment等接口都是从Node接口继承过来的。NodeList接口是一个节点的集合,它包含了某个节点中的所有子节点。NamedNodeMap接口也是一个节点的集合,通过该接口,可以建立节点名和节点之间的一一映射关系,从而利用节点名可以直接访问特定的节点。下面将对这四个接口分别做一些简单的介绍。 
1Document接口 
Document接口代表了整个XML/HTML文档,因此,它是整棵文档树的根,提供了对文档中的数据进行访问和操作的入口。
由于元素、文本节点、注释、处理指令等都不能脱离文档的上下文关系而独立存在,所以在Document接口提供了创建其他节点对象的方法,通过该方法创建的节点对象都有一个ownerDocument属性,用来表明当前节点是由谁所创建的以及节点同Document之间的联系。
DOM树中,Document节点是DOM树中的根节点,也即对XML文档进行操作的入口节点。通过Docuemt节点,可以访问到文档中的其他节点,如处理指令、注释、文档类型以及XML文档的根元素节点等等。另外,在一棵DOM树中,Document节点可以包含多个处理指令、多个注释作为其子节点,而文档类型节点和XML文档根元素节点都是唯一的。
关于Document接口的IDLInterface Definition Language接口定义语言)定义和其中一些比较常用的属性和方法的详细介绍可以在MSDN中找到。
2Node接口 
Node接口在整个DOM树中具有举足轻重的地位,DOM接口中有很大一部分接口是从Node接口继承过来的,例如,ElementAttrCDATASection等接口,都是从Node继承过来的。在DOM树中,Node接口代表了树中的一个节点。
3NodeList接口 
NodeList接口提供了对节点集合的抽象定义,它并不包含如何实现这个节点集的定义。NodeList用于表示有顺序关系的一组节点,比如某个节点的子节点序列。另外,它还出现在一些方法的返回值中,例如GetNodeByName
DOM中,NodeList的对象是"live"的,换句话说,对文档的改变,会直接反映到相关的NodeList对象中。例如,如果通过DOM获得一个NodeList对象,该对象中包含了某个Element节点的所有子节点的集合,那么,当再通过DOMElement节点进行操作(添加、删除、改动节点中的子节点)时,这些改变将会自动地反映到NodeList对象中,而不需DOM应用程序再做其他额外的操作。
NodeList中的每个item都可以通过一个索引来访问,该索引值从0开始。 
4NamedNodeMap接口 
实现了NamedNodeMap接口的对象中包含了可以通过名字来访问的一组节点的集合。不过注意,NamedNodeMap并不是从NodeList继承过来的,它所包含的节点集中的节点是无序的。尽管这些节点也可以通过索引来进行访问,但这只是提供了枚举NamedNodeMap中所包含节点的一种简单方法,并不表明在DOM规范中为NamedNodeMap中的节点规定了一种排列顺序。
NamedNodeMap表示的是一组节点和其唯一名字的一一对应关系,这个接口主要用在属性节点的表示上。与NodeList相同,在DOM中,NamedNodeMap对象也是“live”的。
二.MSXML的几个重要接口
       从理论上说,根据XML的格式定义,我们可以自己编写一个XML的语法分析器,但实际上微软已经给我们提供了一个XML语法解析器,即一个叫做MSXML.DLL的动态链接库,实际上它是一个COMComponent Object Model)对象库,里面封装了进行XML解析时所需要的所有对象。因为COM是一种以二进制格式出现的和语言无关的可重用对象,所以你可以用任何语言(比如VBVCDELPHIC++ Builder甚至是脚本语言等等)对它进行调用,在你的应用中实现对XML文档的解析。
MSXML.DLL所包括的主要COM接口有:
1. IXMLDOMDocumentDocument接口)
DOMDocument对象是XML DOM的基础,你可以利用它所暴露的属性和方法来浏览、查询和修改XML文档的内容和结构。DOMDocument表示了树的顶层节点,它实现了DOM文档的所有的基本方法,并且提供了额外的成员函数来支持XSLXSLT。它创建了一个文档对象,所有其他的对象都可以从这个文档对象中得到和创建。
2. IXMLDOMNodeNode接口)
IXMLDOMNode是文档对象模型(DOM)中的基本对象,元素、属性、注释、过程指令和其他的文档组件都可以认为是IXMLDOMNode。事实上,DOMDocument对象本身也是一个IXMLDOMNode对象。
3. IXMLDOMNodeList
IXMLDOMNodeList实际上是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中立刻反映出来,可以通过"for.循环 "结构来遍历所有的节点。
4. IXMLDOMParseError
IXMLDOMParseError接口用来返回在解析过程中所出现的详细的信息,包括错误号、行号、字符位置和文本描述。
在具体应用时可以用DOMDocumentLoad方法来装载XML文档,用IXMLDOMNodeselectNodes(查询的结果有多个,得到存放搜索结果的链表)或selectSingleNode(查询的结果有一个,在有多个的情况下返回找到的第一个节点)方法进行查询,用createNodeappendChild方法来创建节点和追加节点,用IXMLDOMElementsetAttributegetAttribute方法来设置和获得节点的属性。
三.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
属性说明
传回指定节点相关的文字。这并非一个元素中数据的值,而是与一个节点相关且未解析的文字,就像一个属性或者一个处理指令
基本语法
varNodeValue xmlDocNode.nodeValue;
语法说明
传回的文字代表了以节点的nodeType 属性为主的型态值。因为节点型态可能是几种数据型态中的一种,传回值也因此有差异。传回null 的节点型态有:DOCUMENTELEMENTDOCUMENT TYPEDOCUMENT FRAGMENTENTITYENTITY REFERENCE,和NOTATION。此属性可擦写。
使用范例
varNodeValue xmlDoc.documentElement.nodeValue;
alert(varNodeValue);
ondataavailable
属性说明
指定一个事件来处理ondataavailable 事件。
基本语法
xmlDocNode.ondataavailable value;
语法说明
此属性是唯写,允许文件作者一旦数据为可用,即可尽快的使用数据来运作。
使用范例
xmlDoc.ondataavailable alert("Data is now available.");
onreadystatechange
属性说明
指定一个事件来处理onreadystatechange 事件。这个事件能辨识readyState 属性的改变。
基本语法
xmlDocNode.onreadystatechange value;
语法说明
此属性是唯写的,允许文件作者指定当readyState 属性改变时呼叫事件。
使用范例
xmlDoc.onreadystatechange
alert("The readyState property has changed.");
ownerDocument
属性说明
传回文件的根节点,包含目前节点。
基本语法
objOwnerDoc xmlDocument.ownerDocument;
语法说明
此属性是只读的,传回一个包含文件根节点的对象,包含特定的节点。
使用范例
objOwnerDoc xmlDoc.childNodes.item(2).ownerDocument;
alert(objOwnerDoc);
parentNode
属性说明
传回目前节点的父节点。只能应用在有父节点的节点中。
基本语法
objParentNode xmlDocumentNode.parentNode;
语法说明
此属性是只读的,传回包含指定节点的父节点对象。如果此节点不存在于文件树中,将传回null
使用范例
objParentNode xmlDoc.childNodes.item(1).parentNode;
alert(objParentNode);
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-UNINITIALIZEDXML 对象被产生,但没有任何文件被加载。
1-LOADING:加载程序进行中,但文件尚未开始解析。
2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效。
3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有效但只读的。
4-COMPLETED:文件已完全加载,代表加载成功。
使用范例
alert("The readyState property is " + 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);
xml
属性说明
传回指定节点的XML 描述和所有的子节点。
基本语法
xmlValue xmlDocumentNode.xml;
语法说明
此属性是只读的。
使用范例
xmlValue xmlDoc.documentElement.xml;
alert(xmlValue);</DIV>
<DIV class=content>
<DIV class=content>
Document 方法
abort
方法说明
取消一个进行中的异步下载
基本语法
xmlDocument.abort();
语法说明
如果这个方法在异步下载时被呼叫,所有的解析动作会停止,而且在内存中的文件会被释放。
使用范例
 
appendChild
方法说明
加上一个节点当作指定节点最后的子节点
基本语法
xmlDocumentNode.appendChild(newChild);
语法说明
newChild 是附加子节点的地址。
使用范例
docObj xmlDoc.documentElement;
alert(docObj.xml);
objNewNode docObj. appendChild(xmlDoc. documentElement.firstChild);
alert(docObj.xml);
cloneNode
方法说明
建立指定节点的复制。
基本语法
xmlDocumentNode.cloneNode(deep);
语法说明
deep 是一个布尔值。如果为true,此节点会复制以指定节点发展出去的所有节点。如果是false,只有指定的节点和它的属性被复制。
使用范例
currNode xmlDoc.documentElement.childNodes.item(1);
objClonedNode currNode.cloneNode(1);
alert(objClonedNode.xml);
createAttribute
方法说明
建立一个指定名称的属性。
基本语法
xmlDocument.createAttribute(name);
语法说明
name 是被建立属性的名称。
使用范例
objNewAtt xmlDoc.createAttribute("encryption");
alert(objNewAtt.xml);
createCDATASection
方法说明
建立一个包含特定数据的CDATA
基本语法
xmlDocument.createCDATASection(data);
语法说明
data 是一个字符串,且包含了被置放在CDATA 的资料。
使用范例
objNewCDATA xmlDoc.createCDATASection("This is a CDATA Section");
alert(objNewCDATA.xml);
createComment
方法说明
建立一个包含指定数据的批注。
基本语法
xmlDocument.createComment(data);
语法说明
data 是一个字符串,且包含了被置放在批注的资料。
使用范例
objNewComment xmlDoc.createComment("This is a comment");
alert(objNewComment.xml);
createDocumentFragment
方法说明
建立一个空的文件片断对象。
基本语法
xmlDocument.createDocumentFragment();
语法说明
一个新的文件片断被建立,但没有加到文件树中。要加入片断到文件树中,必须使用插入方法,例如insertBeforereplaceChild appendChild
使用范例
objNewFragment xmlDoc.createDocumentFragment();
alert(objNewFragment.xml);
createElement
方法说明
建立一个指定名称的元素。
基本语法
xmlDocument.createElement(tagName);
语法说明
tagName 是一个区分大小写的字符串来指定新元素名称。
使用范例
objNewElement xmlDoc.createElement("TO");
alert(objNewElement.xml);
createEntityReference
方法说明
建立一个参照到指定名称的实体。
基本语法
xmlDocument.createEntityReference(name);
语法说明
name 是一个区分大小写的字符串,来指定新实体引用的名称。一个新的实体引用被建立,但是并没有被加到文件树中。若要将实体引用加到文件树中,必须使用一种插入方法,例如:insertBeforereplaceChild,或appendChild
使用范例
objNewER xmlDoc.createEntityReference("eRef");
alert(objNewER.xml);
createNode
方法说明
建立一个指定型态、名称,及命名空间的新节点。
基本语法
xmlDocument.createNode(type, name, nameSpaceURI);
语法说明
type 用来确认要被建立的节点型态,name 是一个字符串来确认新节点的名称,命名空间的前缀则是选择性的。nameSpaceURI 是一个定义命名空间URI 的字符串。如果前缀被包含在名称参数中,此节点会在nameSpaceURI 的内文中以指定的前缀建立。如果不包含前缀,指定的命名空间会被视为预设的命名空间。
使用范例
objNewNode xmlDoc.createNode(1, "TO", "");
alert(objNewNode.xml);
createProcessingInstruction
方法说明
建立一个新的处理指令,包含了指定的目标和数据。
基本语法
xmlDocument.createProcessingInstruction(target, data);
语法说明
target 是表示目标、名称或处理指令的字符串。Data 是表示处理指令的值。一个新的处理指令被建立,但是并没有加到文件树中。要把处理指令加到文件树中,必须使用插入方法,例如:insertBeforereplaceChild,或是appendChild
使用范例
objNewPI xmlDoc.createProcessingInstruction(XML, version"1.0");
alert(objNewPI.xml);
createTextNode
方法说明
建立一个新的text 节点,并包含指定的数据。
基本语法
xmlDocument.createTextNode(data);
语法说明
data 是一个代表新text 节点的字符串。一个新的text 节点被建立,但是没有加到文件树中。若要将节点加到文件树中,必须使用插入方法,例如:insertBeforereplaceChildappendChild
使用范例
objNewTextNode xmlDoc.createTextNode("This is a text node.");
alert(objNewTextNode.xml);
getElementsByTagName
方法说明
传回指定名称的元素集合。
基本语法
objNodeList xmlDocument. getElementsByTagName (tagname);
语法说明
tagname 是一个字符串,代表找到的元素卷标名称。使用tagname "*"传回文件中所有找到的元素。
使用范例
objNodeList xmlDoc.getElementsByTagName("*");
alert(objNodeList.item(1).xml);
hasChildNodes
方法说明
如果指定的节点有一个或更多子节点,传回值为true
基本语法
boolValue xmlDocumentNode.hasChildNodes() ;
语法说明
如果此节点有子节点传回值为true,否则传回false 值。
使用范例
boolValue xmlDoc.documentElement.hasChildNodes();
alert(boolValue);
insertBefore
方法说明
在指定的节点前插入一个子节点。
基本语法
objDocumentNode xmlDocumentNode.insertBefore(newChild,refChild);
语法说明
newChild 是一个包含新子节点地址的对象,refChild 是参照节点的地址。新子节点被插到参照节点之前。如果refChild 参数没有包含在内,新的子节点会被插到子节点列表的末端。
使用范例
objRefNode xmlDoc.documentElement;
alert(xmlDoc.xml);
objNewNode xmlDoc.createComment("This is a comment");
xmlDoc.insertBefore(objNewNode, objRefNode);
alert(xmlDoc.xml);
load
方法说明
表示从指定位置加载的文件。
基本语法
boolValue xmlDocument.load(url);
语法说明
url 包含要被加载档案的URL 的字符串。假如文件加载成功,传回值即为true。若加载失败,传回值为false
使用范例
boolValue xmlDoc.load("LstA_1.xml");
alert(boolValue);
loadXML
方法说明
加载一个XML 文件或字符串的片断。
基本语法
boolValue xmlDocument.loadXML(xmlString);
语法说明
xmlString 是包含XML 文字码的字符串。这个字符串可以包含整个文件或者只是一个文件片断。如果文件加载成功,传回值为true。假如加载失败,传回值则是false
使用范例
xmlString "<GREETING> <MESSAGE> Hello! </MESSAGE> </GREETING>";
boolValue xmlDoc.loadXML(xmlString);
alert(boolValue);
nodeFromID
方法说明
传回节点ID 符合指定值的节点。
基本语法
xmlDocumentNode xmlDocument.nodeFromID(idString);
语法说明
idString 是一个包含ID 值的字符串。符合的节点必定是ID 型态。若符合,将传回一个对象;若操作失败,则传回null
使用范例
objDocumentNode xmlDoc.nodeFromID("TO");
alert(objDocumentNode);
parsed
方法说明
会验证该指定的节点(node)及其衍生的子节点(descendants)是否已被解析过。
基本语法
boolValue xmlDocumentNode.parsed()
语法说明
如果全部的节点都已经被解析过了,则传回值为ture;如果有任何一个节点尚未被解析,传回值则为false
使用范例
currNode xmlDoc.documentElement.childNodes.item(0)
boolValue currNode.parsed()
alert(boolValue)
removeChild
方法说明
会将指定的节点从节点清单中移除。
基本语法
objDocumentNode xmlDocumentNode.removeChild(oldChild);
语法说明
oldChild 为一个包含要被移除的节点对象。
使用范例
objRemoveNode xmlDoc.documentElement.childNodes.item(3)
alert(xmlDoc.xml);
xmlDoc.documentElement.removeChild(objRemoveNode)
alert(xmlDoc.xml)
replaceChild
方法说明
置换指定的旧子节点为提供的新子节点。
基本语法
objDocumentNode xmlDocumentNode.replaceChild(newChild,oldChild)
语法说明
newChild 为包含新子节点的对象。如果此参数为null,则此旧子节点会被移除而不会被取代。oldChild 为包含旧子节点的对象。
使用范例
objOldNode xmlDoc.documentElement.childNodes.item(3)
objNewNode xmlDoc.createComment("I''ve replaced the BCC element.")
alert(xmlDoc.xml)
xmlDoc.documentElement.replaceChild(objNewNode,objOldNode)
alert(xmlDoc.xml)
selectNodes
方法说明
传回所有符合提供样式(pattern)的节点。
基本语法
objDocumentNodeList xmlDocumentNode.selectNodes(patternString)
语法说明
patternString 为一包含XSL 样式的字符串。此方法会传回节点清单对象,包含符合样式的节点。如果没有符合的节点,则传回空的清单列表。
使用范例
objNodeListxmlDoc.selectNodes"/");
alertobjNodeList.item(0).xml);
selectSingleNode
方法说明
传回第一个符合样式的节点。
基本语法
objDocumentNode xmlDocumentNode. selectSingleNode (patternString)
语法说明
patternString 为一包含XSL 样式的字符串。此方法会传回第一个符合的节点对象,如果没有符合的节点,则传回null
使用范例
objNode xmlDoc.selectSingleNode("EMAIL/BCC")
alert(objNode.xml)
transformNode
方法说明
使用提供的样式表来处理该节点及其子节点。
基本语法
strTransformedDocument xmlDocumentNode.transformNode(stylesheet)
语法说明
stylesheet 为一XML 文件或是片断包含负责节点转换工作的XSL 元素。此方法会传回一包含转换结果的字符串。
使用范例
var style new ActiveXObject("Microsoft.XMLDOM")
style.load("LstA_49.xsl")
strTransform xmlDoc.transformNode(style.documentElement)
alert(strTransform)
Document 事件
ondataavailable
事件说明
该事件会在XML 文件有效时被触发。
基本语法
该事件有下面三种处理方式
.Inline<element ondataavailable handler>
.Event propertyobject.ondataavailable handler
.Named script<SCRIPT FOR object EVENT ondataavailable>
语法说明
ondataavailable 事件只要一获得有效的数据就会被触发。这项技术并未说明在这个文件中有多少数据是有效的。
使用范例
xmlDoc.ondataavailable alert("Data is now available.");
onreadystatechange
事件说明
 这个事件会在readyState 属性内容改变时被触发。
基本语法
 此一事件有如下三种处理方式(与ondataavailable相似):
. Inline
<element onreadystatechange  handler>
. Event property
object.onreadystatechange  handler
. Named script
<SCRIPT FOR  object EVENT  onreadystatechange>
语法说明
onreadystatechange 事件在readyState 属性内容改变时就会被触发,但这个事件并未说明「准备好」的状态是什么。必须使用readyState 属性来取得现在的状态。
使用范例
xmlDoc.onreadystatechange 
alert("The readyState property is" + xmlDoc.readyState)
nodeList 对象的属性
length
属性说明
length 属性是nodeList 对象的唯一属性
基本语法
传回集合中项目的个数。
语法说明
intValue xmlNodeList.length
使用范例
objNodeList xmlDoc.documentElement.childNodes
alert(objNodeList.length)
nodeList 对象的方法
item
方法说明
存取文件树中的单一节点。
基本语法
objDocumentNode xmlNodeList.item(index)
语法说明
index 为长整数指定子节点的index(0-based)
使用范例
objNode xmlDoc.documentElement.childNodes.item(2)
alert(objNode.xml)
nextNode
方法说明
存取集合中的下一个节点。
基本语法
objDocumentNode xmlNodeList.nextNode()
语法说明
传回包含下一个节点的对象。若无法取得下一个节点则传回null
使用范例
objNode xmlDoc.documentElement.childNodes
objNextNode objNode.nextNode()
alert(objNextNode.xml)
objNextNode objNode.nextNode()
alert(objNextNode.xml)
reset
方法说明
重新设定节点清单列表中的索引(index)指针。
基本语法
objDocumentNode xmlNodeList.reset()
语法说明
设定节点清单列表中的指针指向第一个节点的前面。
使用范例
objNode xmlDoc.documentElement.childNodes
objNextNode objNode.nextNode()
alert(objNextNode.xml)
objNode.reset()
objNextNode objNode.nextNode()
alert(objNextNode.xml)
parseError 对象的属性
parseError 对象传回最后一个解析错误的信息。
要示范parseError 对象如何运作,需要使用一份有错误的XML 文件,下面是一份保有CcBcc 元素的电子邮件文件,根据DTD 这是一篇错误的电子邮件文件。
<?xml version"1.0"?>
<!DOCTYPE EMAIL SYSTEM "LstA_2.dtd">
<EMAIL PRIORITY"HIGH">
<TO>Jodie@msn.com</TO>
<FROM>Bill@msn.com</FROM>
<BCC>Naomi@msn.com</BCC>
<CC>Philip@msn.com</CC>
<SUBJECT>My document is a tree.</SUBJECT>
<BODY>This is an example of a tree structure.</BODY>
</EMAIL>
errorCode
属性说明
传回最后一个解析错误的错误码。
基本语法
intErrorValue xmlDocument.parseError.errorCode
语法说明
此属性只读且会传回一长整数。
使用范例
intParseValue xmlDoc.parseError.errorCode
alert(intParseValue)
filePos
属性说明
传回档案中错误发生的位置。
基本语法
intErrorValue xmlDocument.parseError.filePos
语法说明
此一属性只读,且会传回表示绝对位置的长整数(以字符数表示)
使用范例
intParseValue xmlDoc.parseError.filePos
alert(intParseValue)
Line
属性说明
传回错误发生所在的行数。
基本语法
intErrorValue xmlDocument.parseError.line
语法说明
此一属性只读,且会传回表示错误发生所在行数的长整数。
使用范例
intParseValue xmlDoc.parseError.line
alert(intParseValue)
linePos
属性说明
传回错误发生在行中的哪个位置。
基本语法
intErrorValue xmlDocument.parseError.linePos
语法说明
此一属性只读,且会传回一长整数表示错误发生在行中的哪一个字符位置。
使用范例
intParseValue xmlDoc.parseError.linePos
alert(intParseValue)
reason
属性说明
传回最后一个错误发生的原因。
基本语法
strErrorReason xmlDocument.parseError.reason
语法说明
此一属性只读,且会传回最后一个解析错误发生原因的叙述字符串。
使用范例
strErrorReason xmlDoc.parseError.reason
alert(strErrorReason)
srcText
属性说明
传回错误发生处该行的文字。
基本语法
strSrcText xmlDocument.parseError.srcText
语法说明
此一属性只读。传回错误发生处该行完整的文字,而且包含空格。
使用范例
strSrcText xmlDoc.parseError.srcText
alert(strSrcText)
 
以上内容仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值