分享
 
 
 

FireFox对XML的处理兼容IE的节点处理方法

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

使Firefox对XML的处理兼容IE的节点处理方法。具体代码列出如下。

具体代码如下。

<! DOCTYPE Html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

< HTML >

< HEAD >

< TITLE > 使firefox对xml的处理兼容IE的selectSingleNode selectNodes方法 </ TITLE >

< META NAME ="Author" CONTENT ="emu" >

< META NAME ="KeyWords" CONTENT ="firefox IE selectSingleNode selectNodes" >

< META NAME ="Description" CONTENT ="使firefox可以支持selectSingleNode selectNodes方法" >

< SCRIPT LANGUAGE ="javascript" >

<!--

var isIE = !! document.all;

function parseXML(st){

if (isIE){

var result = new ActiveXObject( " microsoft.XMLDOM " );

result.loadXML(st);

} else {

var parser = new DOMParser();

var result = parser.parseFromString(st, " text/xml " );

}

return result;

}

if ( ! isIE){

var ex;

XMLDocument.prototype.__proto__.__defineGetter__( " xml " , function (){

try {

return new XMLSerializer().serializeToString( this );

} catch (ex){

var d = document.createElement( " div " );

d.appendChild( this .cloneNode( true ));

return d.innerHTML;

}

});

Element.prototype.__proto__.__defineGetter__( " xml " , function (){

try {

return new XMLSerializer().serializeToString( this );

} catch (ex){

var d = document.createElement( " div " );

d.appendChild( this .cloneNode( true ));

return d.innerHTML;

}

});

XMLDocument.prototype.__proto__.__defineGetter__( " text " , function (){

return this .firstChild.textContent

});

Element.prototype.__proto__.__defineGetter__( " text " , function (){

return this .textContent

});

XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (XPath){

var x = this .selectNodes(xpath)

if ( ! x x.length < 1 ) return null ;

return x[ 0 ];

}

XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath){

var xpe = new XPathEvaluator();

var nsResolver = xpe.createNSResolver( this .ownerDocument == null ?

this .documentElement : this .ownerDocument.documentElement);

var result = xpe.evaluate(xpath, this , nsResolver, 0 , null );

var found = [];

var res;

while (res = result.iterateNext())

found.push(res);

return found;

}

}

var x = parseXML( " <people> <person first-name=\ " eric\ " middle-initial=\ " H\ " last-name=\ " jung\ " > <address street=\ " 321 south st\ " city=\ " denver\ " state=\ " co\ " country=\ " usa\ " /> <address street=\ " 123 main st\ " city=\ " arlington\ " state=\ " ma\ " country=\ " usa\ " /> </person> <person first-name=\ " jed\ " last-name=\ " brown\ " > <address street=\ " 321 north st\ " city=\ " atlanta\ " state=\ " ga\ " country=\ " usa\ " /> <address street=\ " 123 west st\ " city=\ " seattle\ " state=\ " wa\ " country=\ " usa\ " /> <address street=\ " 321 south avenue\ " city=\ " denver\ " state=\ " co\ " country=\ " usa\ " /> </person></people> " );

alert( " 搜索所有人的姓氏(last-name) " )

var results = x.selectNodes( " //person/@last-name " );

for ( var i = 0 ; i < results.length;i ++ )

alert( " Person # " + i + " has the last name " + results[i].nodeValue);

alert( " 搜索第二个人 " );

// IE是以0为下标基数的,而不是1

if ( ! document.all)

results = x.selectSingleNode( " /people/person[2] " );

else

results = x.selectSingleNode( " /people/person[1] " );

alert(results.xml)

alert( " 获得住址在donver街上的人 " );

results = x.selectNodes( " //person[address/@city='denver'] " );

for ( var i = 0 ; i < results.length;i ++ )alert(results[i].xml)

if ( ! document.all){

// 获得所有街名中带south的地址

results = x.selectNodes( " //address[contains(@street, 'south')] " );

alert(results[ 0 ].xml);

} else {

alert( " IE不支持 //address[contains(@street, 'south')] 这种查询方式 " )

}

// -->

</ SCRIPT >

</ HEAD >

< BODY >

</ BODY >

</ HTML >

例子引自 http://kb.mozillazine.org/XPath 。从例子可以看到,IE对xpath的支持还是有限度的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有