ทำให้การประมวลผล XML ของ Firefox เข้ากันได้กับวิธีการประมวลผลโหนดของ IE รหัสเฉพาะแสดงอยู่ด้านล่าง
รหัสเฉพาะมีดังนี้
<หัว>
< TITLE > ทำให้การประมวลผล xml ของ firefox เข้ากันได้กับเมธอด selectSingleNode selectNodes ของ IE TITLE >
< ชื่อเมตา ="ผู้เขียน" เนื้อหา ="นกอีมู" >
< ชื่อเมตา ="คำหลัก" เนื้อหา ="firefox IE selectSingleNode selectNodes">
< META NAME ="คำอธิบาย" CONTENT ="เปิดใช้งาน Firefox เพื่อสนับสนุนเมธอด selectSingleNode selectNodes">
< ภาษาสคริปต์ ="จาวาสคริปต์">
-
var isIE = !! document.all;
ฟังก์ชัน parseXML(st){
ถ้า (คือ IE){
ผลลัพธ์ var = ActiveXObject ใหม่ ( " microsoft.XMLDOM " );
result.loadXML(st);
} อื่น {
var parser = DOMParser ใหม่ ();
ผลลัพธ์ var = parser.parseFromString(st, " text/xml " );
-
ส่งคืนผลลัพธ์;
}
ถ้า ( ! isIE){
วาร์ อดีต;
XMLDocument.prototype.__proto__.__defineGetter__( " xml " , ฟังก์ชัน (){
พยายาม {
ส่งคืน XMLSerializer ใหม่ ().serializeToString ( นี้ );
} จับ (เช่น){
var d = document.createElement( " div " );
d.appendChild( นี้ .cloneNode( จริง ));
กลับ d.innerHTML;
-
-
Element.prototype.__proto__.__defineGetter__( " xml " , ฟังก์ชัน (){
พยายาม {
ส่งคืน XMLSerializer ใหม่ ().serializeToString ( นี้ );
} จับ (เช่น){
var d = document.createElement( " div " );
d.appendChild( นี้ .cloneNode( จริง ));
กลับ d.innerHTML;
-
-
XMLDocument.prototype.__proto__.__defineGetter__( " ข้อความ " , ฟังก์ชัน (){
ส่งคืน .firstChild.textContent นี้
-
Element.prototype.__proto__.__defineGetter__( " ข้อความ " , ฟังก์ชัน (){
ส่งคืน .textContent นี้
});
XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = ฟังก์ชัน (XPath){
var x = นี่ .selectNodes(xpath)
ถ้า ( ! x x.length < 1 ) กลับค่า null ;
กลับ x[0];
-
XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = ฟังก์ชัน (xpath){
var xpe = XPathEvaluator ใหม่();
var nsResolver = xpe.createNSResolver( นี่ .ownerDocument == null ?
นี้ .documentElement : นี้ .ownerDocument.documentElement);
ผลลัพธ์ var = xpe.evaluate(xpath, this, nsResolver, 0, null);
พบ var = [];
หลากหลาย;
ในขณะที่ (res = result.iterateNext())
พบ.ผลักดัน(res);
พบผลตอบแทน;
-
-
var x = parseXML( "
alert( " ค้นหาทั้งหมด นามสกุลบุคคล (นามสกุล) " )
ผลลัพธ์ var = x.selectNodes( " //person/@last-name " );
สำหรับ ( var i = 0 ; i < results.length; i ++ )
alert( " Person # " + i + " มีนามสกุล " + results[i].nodeValue);
alert( "ค้นหาบุคคลที่สอง" );
// IE ใช้ 0 เป็นฐานตัวห้อย ไม่ใช่ 1
ถ้า ( ! document.all)
ผลลัพธ์ = x.selectSingleNode( " /people/person[2] " );
อื่น
ผลลัพธ์ = x.selectSingleNode( " /people/person[1] " );
alert(results.xml)
alert( "รับบุคคลที่มีที่อยู่บนถนนดอนเวอร์" );
ผลลัพธ์ = x.selectNodes( " //person[address/@city='denver'] " );
สำหรับ ( var i = 0 ; i < results.length;i ++ )alert(results[i].xml)
if ( ! document.all){
// รับที่อยู่ทั้งหมดที่มีทิศใต้ในชื่อถนน
ผลลัพธ์ = x.selectNodes( " //address[contains(@street, 'south')] " );
การแจ้งเตือน (ผลลัพธ์ [ 0 ].xml);
} อื่น {
alert( "IE ไม่รองรับ //address[contains(@street, 'south')] วิธีการสืบค้น")
-
-
สคริปต์ >
<ร่างกาย>
ร่างกาย>
HTML >
ตัวอย่างที่ยกมาจาก http://kb.mozillazine.org/XPath ดังที่คุณเห็นจากตัวอย่าง การรองรับ xpath ของ IE ยังมีจำกัด