xml的操作
xml的基本操作
1 JS装载xml文档,是将xml的字符串装载成dom对象 3 浏览器处理空白信息的差异 4 dom对象序列化xml字符串 将xml文档装载成dom对象
装载xml文档html文档中的js <scripttype="text/javascript"> function test(){ vardomxml1=loadXML(true,"loadXML.xml"); vardomxml2=loadXML(false,"<xml>124</xml>"); alert(""); } </script> loadXML .JS中的函数 *封装IE和Fire浏览器中装载同域XML文件或xml字符串的方法,返回的是xml文档对应的dom对象中的根节点 * @parma flag true 表示装载ml文件, flas表示装载失败 * @ oaram xmldoc flag 为true 表示xml文件路径falg为false表示xml字符串 */
function loadXML(flag,xmldoc){ if(window.ActiveXObject){ //IE浏览器装载xml对象 varactiveName=["MSXM2.DOMDocument","Miscrosoft.XmlDom"]; var xmlObj; for(var i=0;i<activeName.length;i++){ try { //创建成功,返回 xmlObj=newActiveXObject(activeName[i]); break; } catch (e) { } } if(xmlObj){ //同步方式装载xml数据 xmlObj.async=false; if(flag){ //装载xml文件 xmlObj.load(xmldoc); }else { //装载xml字符串 xmlObj.loadXML(xmldoc); } //返回整个xml文档根节点 // return xmlObj; //返回根元素节点元素 return xmlObj.documentElement; }else{ alert("创建失败xml"); return null; } } //判断是否为IE的元素 else if(document.implementation.createDocument){ //针对firefox获取浏览器 var xmlObj; if(flag){ //装载xml文件 //创建了空的dom对象 xmlObj=document.implementation.createDocument("","",null); xmlObj.async=false;//同步方式装载 xmlObj.load(xmldoc); return xmlObj.documentElement; }else{ alert("失败") return null; } } else{ //装载XML字符串 //创建dom解析器 xmlObj=new DOMParaser(); vardocRoot=xmlObj.parseFormString(xmldoc,"text/xml"); return docRoot.documentElement; } alret("失败"); return null; }
浏览器处理空白信息的差异解决方法是:移除所有空白信息,保证IE和FireFox下的dom树结构相同。
function removeBlack(doc){ if(doc.childNodes.lenght>1){ for(varloopindes=0;loopindes<doc.childNodes.lenght;loopindes++) { varcurrentNode=doc.childNodes[loopindes]; if(currentNode.nodeType==1){ removeBlack(currentNode); } if(((/^s+$/test(currentNode.nodeValue)))&&(currentNode.nodeType==3)){ doc.removeChild(doc.childNodes[loopIndex--]); } } } }
将dom序列为成表示xml的字符串
//封装不同浏览器dom序列化字符串 function serizDom(xmldoc){ if(xmldoc.xml){ //IE return xmldoc.xml; }//火狐 else if(window.XMLSerializer){ var seriz=new XMLSerializer(); returnseriz.serizlizeToString(xmldoc); } return null; } 通过以上几个基本步骤,我们了解到,对于xml的操作,首先是进行装载,然后将其序列化为dom对象,显示在html页面中。而在装载中有不同的浏览器差异,这种方式和创建xmlhttpRequest对象基本是类似的,所以又是学习的相同之处。装载完成就是处理,对空白信息进行处理,而操作中,增删中用到getElementByID获取解析xml方法并不是很好,更好的方式是XPath技术这个还请大家自己查看学习。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |