html xml 操作,xml的操作

xml的基本操作

1 JS装载xml文档,是将xml的字符串装载成dom对象2 Dom操作XML

3浏览器处理空白信息的差异

4 dom对象序列化xml字符串

将xml文档装载成dom对象

装载xml文档

html文档中的js

function test(){

vardomxml1=loadXML(true,"loadXML.xml");

vardomxml2=loadXML(false,"124");

alert("");

}

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

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

{

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的字符串

IE方式:dom对象上有个xml属性,可以获得对象所有对应的xml字符串

FifeFox:新建XLMSerializer对象,使用serializeToStringdom对象转为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技术这个还请大家自己查看学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值