很久没有真正的写东西了..忙着找工作..现在工作有个着落了..又有心思研究.学习新的东西了 这篇为以后学ajax打基础的 生成DOM文档对象的方法 var xmlDoc=new ActiveXObject("Msxml2.DOMDocument.4.0"); 生成XML文档对象xmlDoc,xmlDoc中包含XML文档中所有元素和节点 xmlDoc.async=false; 装载XML文档完毕后才开始处理下一步骤 xmlDoc.load("1.xml"); 将XML文档装载到文档对象中,在内存中形成文档对象树 DOM对象 1.IXMLDOMDocument/DOMDocument 2.IXMLDOMNode 3.IXMLDOMNodeList 4.IXMLDOMParseError 5.IXMLDOMAttribute 6.IXMLDOMDocumentType1.IXMLDOMDocument/DOMDocument 表示DOM树的最顶层节点属性 async--是否可以异步下载(可读写属性) attributes--返回节点的属性列表 baseName--返回节点的标记名称 childNodes--子节点列表 documentElement--返回文档的根元素(可读写属性)方法 appendChild(在当前节点的最后增加一个新的子节点)
createNode(根据条件生成一个新节点) createnode(type,name,namespaceURL)IXMLDOMDocument / DOMDocument示例
var oNodeMap,str,oList,item; var xmlDoc = new ActiveXObject( " Msxml2.DOMDocument.4.0 " ); xmlDoc.async = false ; xmlDoc.load( " candidate.xml " ); if (xmlDoc.parseError != 0 ) document.writeln(xmlDoc.parseError.reason + " <br> " ); else { oNodeMap = xmlDoc.documentElement.attributes; document.write(oNodeMap.length + " <br> " ); str = xmlDoc.documentElement.childNodes[ 1 ].baseName; document.write(str + " <br> " ); oList = xmlDoc.documentElement.childNodes; for ( var i = 0 ;i < oList.length;i ++ ) document.write(oList[i].xml + " <br> " ); } < script language = " javascript " > var xmlDoc = new ActiveXObject( " Msxml2.DOMDocument.4.0 " ); xmlDoc.async = false ; xmlDoc.load( " candidate.xml " ); var root = xmlDoc.documentElement; document.write(root.xml); document.write( " <br>--------------------------<br> " ); var node = xmlDoc.createNode( 1 , " 创建节点 " , "" ); node.text = " 这是新创建得节点 " ; root.appendChild(node); window.alert(root.xml); document.write(root.xml); </ script >
IXMLDOMNode
属性 lastChild--返回最后一个子节点 nextSibling--指向同一层的下一个兄弟节点 xml--用XML格式表现该节点和所有子节点的内容方法 selectNodes--根据匹配模式操作来返回符合要求的节点集合 selectSingleNode--根据匹配模式操作来返回符合要求的第一个节点 IXMLDOMNode是DOM的基本对象,所有节点都可以看作是一个IXMLDOMNode对象,所有其它DOM对象接口都是继承它的属性和方法。
< html > < body > < script language ="javascript" > var xmlDoc = new ActiveXObject( " Msxml2.DOMDocument.4.0 " ); xmlDoc.async = false ; xmlDoc.load( " candidate.xml " ); var root = xmlDoc.documentElement; var node = root.lastChild; window.alert(node.xml); var firstNode = root.childNodes[ 0 ]; var nextNode = firstNode.nextSibling; window.alert(nextNode.xml); </ script > </ body > </ html > < html > < body > < script language ="javascript" > var xmlDoc = new ActiveXObject( " Msxml2.DOMDocument.4.0 " ); xmlDoc.async = false ; xmlDoc.load( " candidate.xml " ); var root = xmlDoc.documentElement; var node = root.selectNodes( " PERSON/NAME " ); window.alert(node.length); </ script > </ body > </ html >
IXMLDOMNodeList
属性 length--接口对象中包含的节点数量。方法 nextNode--返回节点集合中下一个节点。节点的集合 IXMLDOMParseError 属性 line--错误所在行号 linepos--错误在行中的位置 reason--发生错误的原因 srcText--错误行文本 用此接口捕获XML文档中存在的错误(包括XML结构完整错误及有效性错误) IXMLDOMParseError示例
< html > < body > < script language ="javascript" > var xmlDoc = new ActiveXObject( " Msxml2.DOMDocument.4.0 " ); xmlDoc.async = false ; xmlDoc.load( " errorxml.xml " ); if (xmlDoc.parseError.errorCode != 0 ) { document.writeln( " 错误所在的行号: " + xmlDoc.parseError.line + " <br> " ); document.writeln( " 错误所在的列号: " + xmlDoc.parseError.linepos + " <br> " ); document.writeln( " 错误原因: " + xmlDoc.parseError.reason + " <br> " ); document.writeln( " 错误行文本: " + xmlDoc.parseError.srcText + " <br> " ); } </ script > </ body > </ html >
IXMLDOMAttribute 表示元素的相关属性
属性 nodeType--返回节点类型
ownerDocument--返回该节点的根节点
text--返回节点的文本和子节点树
value--返回属性的值
xml--返回当前节点及其所有子节点的内容
方法 appendChild
selectSingleNode
IDOMAttribute示例
< html > < body > < script language ="javascript" > var xmlDoc = new ActiveXObject( " Msxml2.DOMDocument.4.0 " ); xmlDoc.async = false ; xmlDoc.load( " candidate.xml " ); var node = xmlDoc.documentElement.childNodes[ 0 ]; document.write( " 节点类型: " + node.nodeType + " <br> " ); document.write( " 根元素节点名称: " + node.ownerDocument.documentElement.tagName + " <br> " ); document.write ( " 当前节点的属性值: " + node.attributes[ 0 ].value + " <br> " ); document.write( " 当前节点及其子节点所包含的文本: " + node.text + " <br> " ); </ script > </ body > </ html >
IXMLDOMDocumentType
属性 entities--返回实体集,包括内部和外部DTD定义的 name--返回文档类型的名字 nodeTypeString--返回节点类型的字符串表示方法 removeChild--从返回的子节点集中删除特定子节点,并返回它 replaceChild--从返回的子节点集中用新节点替换特定老节点
IXMLDOMDocumentType示例< html > < body > < script language ="javascript" > var xmlDoc = new ActiveXObject( " Msxml2.DOMDocument.4.0 " ); xmlDoc.async = false ; xmlDoc.load( " candidate.xml " ); var root = xmlDoc.documentElement; var node = root.childNodes[ 1 ]; window.alert( " 当前节点的类型为: " + node.childNodes[ 0 ].nodeTypeString); var element = xmlDoc.createElement( " Resume " ); element.text = " 添加的新元素 " ; root.childNodes[ 1 ].replaceChild(element,node.childNodes[ 0 ]); window.alert(node.xml); </ script > </ body > </ html >
上示例用到的XML文件
<? xml version="1.0" ?> < PEOPLE id ="fdsfsd" ds ="sdfsd" > < PERSON PERSONID ="E01" > < NAME > Tony Blair </ NAME > < ADDRESS > 10 Downing Street, London, UK </ ADDRESS > < TEL > (061) 98765 </ TEL >< FAX > (061) 98765 </ FAX > < EMAIL > blair@everywhere.com </ EMAIL > </ PERSON > < PERSON PERSONID ="E02" > < NAME > Bill Clinton </ NAME > < ADDRESS > White House, USA </ ADDRESS > < TEL > (001) 6400 98765 </ TEL >< FAX > (001) 6400 98765 </ FAX > < EMAIL > bill@everywhere.com </ EMAIL > </ PERSON > < PERSON PERSONID ="E03" > < NAME > Tom Cruise </ NAME > < ADDRESS > 57 Jumbo Street, New York, USA </ ADDRESS > < TEL > (001) 4500 67859 </ TEL >< FAX > (001) 4500 67859 </ FAX > < EMAIL > cruise@everywhere.com </ EMAIL > </ PERSON > < PERSON PERSONID ="E04" > < NAME > Linda Goodman </ NAME > < ADDRESS > 78 Crax Lane, London, UK </ ADDRESS > < TEL > (061) 54 56789 </ TEL >< FAX > (061) 54 56789 </ FAX > < EMAIL > linda@everywhere.com </ EMAIL > </ PERSON > </ PEOPLE >