Un ejemplo simple de búsqueda en XML con javascript
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> /*<![CDATA[*/
body{
font-family: verdana, sans-serif;
}
h1{
font-size: 16pt;
}
#resultados{
margin: 30px 0;
color: darkgreen;
font-size: 11pt;
}
p,pre{
font-size: 11pt;
}
pre{
color: darkred;
}
/*]]>*/
<script type="text/javascript"> //<![CDATA[
function buscarEnXML(urlXML,etiqueta){
var xmlhttp;
var txt,x,i,n,valor;
var cadena = document.getElementById('el_nombre').value;
cadena = cadena.replace(/(<([^>]+)>)/ig,"");
// trim
cadena = cadena.replace(/^\s+/g,'').replace(/\s+$/g,'');
if(cadena == ""){
document.getElementById("resultados").innerHTML='Ingrese un valor';
return false;
}
if(cadena == '*'){
cadena = ""; // mostrar todos
}
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
xmlDoc=xmlhttp.responseXML;
txt="";
losTags=xmlDoc.getElementsByTagName(etiqueta);
for (i=0;i<losTags.length;i++){
valor = losTags[i].childNodes[0].nodeValue;
// Aqui la búsqueda, hay que refinarla, expresion regular, etc
var er = new RegExp(cadena,"i");
n=valor.search(er);
//////////////////////////////////////
if(n != -1){
txt +=losTags[i].childNodes[0].nodeValue + "<br />";
}
}
if( txt == ""){
txt = 'Sin resultados';
}
document.getElementById("resultados").innerHTML=txt;
}
}
xmlhttp.open("GET",urlXML,true);
xmlhttp.send();
}
//]]>
<h1>Buscar nombres en XML
</h1> <input type="text" value="" id="el_nombre" /> <input type="button" value="Buscar" onclick="buscarEnXML('http://vinoselfrances.com.ar/cdcatalog.xml','artist')" /> <p>El ejemplo busca en la etiqueta 'artist', es insensible a mayúsculas/minúsculas, para obtener todos los elementos del xml, ingrese
<b>*
</b><br /> No hay mínimo de caracteres a ingresar.
<br />La función de búsqueda recibe 2 parámetros, la url del xml y el nombre de la etiqueta en la que se quiere buscar.
<br />buscarEnXML('http://vinoselfrances.com.ar/cdcatalog.xml','artist')"
La url del XML es:
<a href="http://vinoselfrances.com.ar/cdcatalog.xml">http://vinoselfrances.com.ar/cdcatalog.xml
</a>
Tendrías que refinar los criterios de búsqueda si hace falta
Demo:
http://foros.emprear.com/xml/busqueda-xml.html
Saludos