Haga que el procesamiento XML de Firefox sea compatible con el método de procesamiento de nodos de IE. Los códigos específicos se enumeran a continuación.
El código específico es el siguiente.
<! DOCTYPE Html PUBLIC "-//W3C//DTD HTML 4.0 Transicional//ES" >
<HTML>
<CABEZA>
< TITLE > Hacer que el procesamiento xml de Firefox sea compatible con el método selectNodes selectSingleNode de IE </ TITLE >
< NOMBRE META ="Autor" CONTENIDO ="emu" >
< META NAME ="Palabras clave" CONTENT ="firefox IE selectSingleNode selectNodes" >
< META NAME ="Descripción" CONTENT ="Habilite Firefox para admitir el método selectSingleNode selectNodes" >
< IDIOMA DE ESCRITURA ="javascript" >
<!--
var esIE = !! documento.all;
función parseXML(st){
si (esIE){
resultado var = nuevo ActiveXObject( " microsoft.XMLDOM " );
resultado.loadXML(st);
} demás {
var analizador = nuevo DOMParser();
var resultado = parser.parseFromString(st, "texto/xml");
}
resultado de devolución;
}
si (! esIE){
varex;
XMLDocument.prototype.__proto__.__defineGetter__( "xml", función (){
intentar {
devolver nuevo XMLSerializer().serializeToString(esto);
} atrapar (ej.){
var d = document.createElement ("div");
d.appendChild(este .cloneNode(verdadero));
devolver d.innerHTML;
}
});
Element.prototype.__proto__.__defineGetter__( "xml", función (){
intentar {
devolver nuevo XMLSerializer().serializeToString(esto);
} atrapar (ej.){
var d = document.createElement ("div");
d.appendChild(este .cloneNode(verdadero));
devolver d.innerHTML;
}
});
XMLDocument.prototype.__proto__.__defineGetter__( "texto", función (){
devolver este .firstChild.textContent
});
Element.prototype.__proto__.__defineGetter__( "texto", función (){
devolver este .textContent
});
XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = función (XPath){
var x = este .selectNodes(xpath)
si (! x x.length <1) devuelve nulo;
devolver x[0];
}
XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = función (xpath){
var xpe = nuevo XPathEvaluator();
var nsResolver = xpe.createNSResolver (este .ownerDocument == null?
este .documentElement : este .ownerDocument.documentElement);
resultado var = xpe.evaluate(xpath, this, nsResolver, 0, null);
var encontrado = [];
varres;
mientras (res = resultado.iterateNext())
encontrado.push(res);
devolución encontrada;
}
}
var x = parseXML( " <personas> <nombre de la persona= " eric " inicial del segundo nombre= " H " apellido= " jung " > <dirección calle= " 321 South st " ciudad= " denver " estado= " co " país= " usa " /> <dirección calle= " 123 main st " ciudad= " arlington " estado= " ma " país= " usa " /> </persona> <persona nombre= " jed " apellido= " brown " > <dirección calle= " 321 north st " ciudad= " atlanta " estado= " ga " país= " usa " /> <dirección calle= " 123 west st " ciudad= " seattle " estado= " wa " país= " usa " /> <address street= " 321 South Avenue " city= " denver " state= " co " country= " usa " /> </person></people> " );
alert( " Buscar todo Apellido de la persona (apellido) " )
var resultados = x.selectNodes( " //persona/@apellido " );
para (var i = 0; i <resultados.longitud;i ++)
alert( " Persona # " + i + " tiene el apellido " + resultados[i].nodeValue);
alert("Buscar a la segunda persona");
// IE usa 0 como base de subíndice, no 1
si (! documento.todos)
resultados = x.selectSingleNode( " /personas/persona[2] " );
demás
resultados = x.selectSingleNode( " /personas/persona[1] " );
alerta(resultados.xml)
alerta( "Consiga la persona cuya dirección está en la calle Donver" );
resultados = x.selectNodes( " //persona[dirección/@ciudad='denver'] " );
for ( var i = 0 ; i < resultados.longitud;i ++ )alerta(resultados[i].xml)
if (! document.all){
// Obtiene todas las direcciones con el sur en el nombre de sus calles
resultados = x.selectNodes( " //dirección[contiene(@calle, 'sur')] " );
alerta(resultados[ 0 ].xml);
} demás {
alert( "IE no admite el método de consulta //address[contains(@street, 'south')]" )
}
// -->
</guión>
</CABEZA>
<CUERPO>
</CUERPO>
</ HTML >
Ejemplo citado de http://kb.mozillazine.org/XPath . Como puede ver en el ejemplo, el soporte de IE para xpath aún es limitado.