Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/05/2012, 11:53
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 8 meses
Puntos: 1567
Respuesta: Leer fichero XML

Un ejemplo simple de búsqueda en XML con javascript

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>Buscar en XML</title>
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. body{
  9. font-family: verdana, sans-serif;
  10. }
  11. h1{
  12. font-size: 16pt;
  13. }
  14. #resultados{
  15. margin: 30px 0;
  16. color: darkgreen;
  17. font-size: 11pt;
  18. }
  19. p,pre{
  20. font-size: 11pt;
  21. }
  22. pre{
  23. color: darkred;
  24. }
  25. /*]]>*/
  26. <script type="text/javascript">
  27. //<![CDATA[
  28. function buscarEnXML(urlXML,etiqueta){
  29. var xmlhttp;
  30. var txt,x,i,n,valor;
  31. var cadena = document.getElementById('el_nombre').value;
  32. cadena = cadena.replace(/(<([^>]+)>)/ig,"");
  33. // trim
  34. cadena = cadena.replace(/^\s+/g,'').replace(/\s+$/g,'');
  35. if(cadena == ""){
  36. document.getElementById("resultados").innerHTML='Ingrese un valor';
  37. return false;
  38. }
  39. if(cadena == '*'){
  40. cadena = ""; // mostrar todos
  41. }
  42. if(window.XMLHttpRequest){
  43. xmlhttp=new XMLHttpRequest();
  44. }else{
  45. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  46. }
  47. xmlhttp.onreadystatechange=function(){
  48. if (xmlhttp.readyState==4 && xmlhttp.status==200){
  49. xmlDoc=xmlhttp.responseXML;
  50. txt="";
  51. losTags=xmlDoc.getElementsByTagName(etiqueta);
  52. for (i=0;i<losTags.length;i++){
  53. valor = losTags[i].childNodes[0].nodeValue;
  54. // Aqui la búsqueda, hay que refinarla, expresion regular, etc
  55. var er = new RegExp(cadena,"i");
  56. n=valor.search(er);
  57. //////////////////////////////////////
  58. if(n != -1){
  59. txt +=losTags[i].childNodes[0].nodeValue + "<br />";
  60. }
  61. }
  62. if( txt == ""){
  63. txt = 'Sin resultados';
  64. }
  65. document.getElementById("resultados").innerHTML=txt;
  66. }
  67. }
  68. xmlhttp.open("GET",urlXML,true);
  69. xmlhttp.send();
  70. }
  71. //]]>
  72. </head>
  73. <div>
  74. <h1>Buscar nombres en XML</h1>
  75. <input type="text" value="" id="el_nombre" />
  76. <input type="button" value="Buscar" onclick="buscarEnXML('http://vinoselfrances.com.ar/cdcatalog.xml','artist')" />
  77. <div id="resultados"></div>
  78. <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 />
  79. No hay mínimo de caracteres a ingresar.<br />
  80. 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 />
  81. </p>
  82. <pre><b>Ejemplo:</b><code>
  83. buscarEnXML('http://vinoselfrances.com.ar/cdcatalog.xml','artist')"
  84. </code></pre>
  85. <p>
  86. La url del XML es: <a href="http://vinoselfrances.com.ar/cdcatalog.xml">http://vinoselfrances.com.ar/cdcatalog.xml</a>
  87. </p>
  88. </div>
  89. </body>
  90. </html>

Tendrías que refinar los criterios de búsqueda si hace falta

Demo:
http://foros.emprear.com/xml/busqueda-xml.html

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.