Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/08/2006, 17:28
kepawe
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 19 años, 8 meses
Puntos: 5
Hola monoswim

Tienes dos opciones para cargar un documento xml sin utilizar Ajax, al menos que yo conozca, con un string almacenado en una variable o cargando un documento xml.

Te pongo las dos:

Desde un string:

Código:
<div id="no" style="position: absolute; left: 30px; top: 10px; width: 200px; height: 150px; background-color: yellow;"></div>
<script language="JavaScript">
<!--
// corrige un error,  gecko y opera interpreta  como nodo de texto los espacios en blanco
function get_child_nodes(el){
	 var elem = el;
	 for (var ctrds = 0; ctrds < elem.childNodes.length; ctrds++){
	     if ((elem.childNodes[ctrds].nodeType == 3) && (!(/\S/).test(elem.childNodes[ctrds].nodeValue))) {
	         // Esta condicional se cumple si es un nodo de Texto en Blanco
	         elem.removeChild(elem.childNodes[ctrds]);
	         ctrds--;
	     }
	  }
	return elem.childNodes;
}




function xml_from_string(xml_string){
	var xmlDoc = null;
	// IE
	if (window.ActiveXObject){ 
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.loadXML(xml_string);
	}
	//apartir de Opera 8, y alguna de las ultimas versiones de Opera 7
	else if(document.implementation.createLSParser) {
		var lsp = document.implementation.createLSParser(1, null);
		var lsi = document.implementation.createLSInput();
		lsi.stringData = xml_string;
		xmlDoc = lsp.parse(lsi);
	
	}
	// gecko
	else if (document.implementation && document.implementation.createDocument) { 
		  var parser = new DOMParser();
          xmlDoc = parser.parseFromString(xml_string, "text/xml");
	
	}
	else{
	  alert("No soporta XMLDOM");
	}

   return xmlDoc;
}
function xml_caca(){
    var msgcc = get_child_nodes(xmlCaca.getElementsByTagName("caca")[0]);
    var str = "";
	for(var ctr = 0; ctr < msgcc.length; ctr++){

    	str+= msgcc[ctr].firstChild.nodeValue + "<br>";
	}
	document.getElementById("no").innerHTML = str;
}


// creamos el objecto xml
var arb = '<?xml version="1.0" encoding="iso-8859-1"?><caca><teta>teta</teta><cola>cola </cola><teta>teta2</teta></caca>';
var xmlCaca = xml_from_string(arb);
xml_caca()



//-->
</script>
Y la otra opcion es cargando el documento xml

Código:
<div id="no" style="position: absolute; left: 30px; top: 10px; width: 200px; height: 150px; background-color: yellow;"></div>
<script language="JavaScript">
<!--
// corrige un error,  gecko y opera interpreta  como nodo de texto los espacios en blanco
function get_child_nodes(el){
	 var elem = el;
	 for (var ctrds = 0; ctrds < elem.childNodes.length; ctrds++){
	     if ((elem.childNodes[ctrds].nodeType == 3) && (!(/\S/).test(elem.childNodes[ctrds].nodeValue))) {
	         // Esta condicional se cumple si es un nodo de Texto en Blanco
	         elem.removeChild(elem.childNodes[ctrds]);
	         ctrds--;
	     }
	  }
	return elem.childNodes;
}




function load_xml(uri){
	var xmlDoc = null;
	// IE
	if (window.ActiveXObject){ 
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.load(uri);
	}
	//apartir de Opera 8, y alguna de las ultimas versiones de Opera 7
	else if(document.implementation.createLSParser) {
		var ls = document.implementation.createLSParser(1, null);
		xmlDoc=ls.parseURI(uri);	
	}
	// gecko
	else if (document.implementation && document.implementation.createDocument) { 
		var xmlDoc= document.implementation.createDocument("","doc",null);
		xmlDoc.load(uri);
	}
	else{
	  alert("No soporta XMLDOM");
	}

   return xmlDoc;
}
function xml_caca(){
    var msgcc = get_child_nodes(xmlCaca.getElementsByTagName("caca")[0]);
    var str = "";
	for(var ctr = 0; ctr < msgcc.length; ctr++){

    	str+= msgcc[ctr].firstChild.nodeValue + "<br>";
	}
	document.getElementById("no").innerHTML = str;
}


// cargamos de documento xml
var xmlCaca = load_xml("caca.xml");


// Con Internet Explorer y Opera, simplemente llamar ejecutar metodo
if (window.ActiveXObject || window.opera) xml_caca();
//en Gecko, ejecutar función una vez cargado el Objeto (Documento XML)
else xmlCaca.onload = function(){xml_caca()};

//-->
</script>
Soportado por IE 5.5+, Gecko, creo que Netscape 7 ya soportaba estos métodos, y Opera 8.
No lo he probado en Konqueror y Safari, pero creo que también los soportan.


Espero que te sea útil.

Un saludo