Newsgroup: it.comp.lang.javascript
Titolo: copiare albero xml

Ajax: un url web mi restituisce XHTML (figli, nodi di testo, attributi,
nipoti..).
Vorrei copiarlo interamente all'interno del mio HTML con javascript.
Devo per forza fare una funziona che cicla su tutti i nodi per copiare
1 a 1 l'albero XHTML (XML)?
p.s.
questa cosa funziona solo in IE:
var item = req.responseXML.getElementsByTagName("message")[0];
var message = item.firstChild.xml;

 var message = item.firstChild.xml;
xml non è una proprietà delle DOM API XML.
Questo è l'approccio da usare secondo gli standard (che *non* funziona su
IE):
var message=(new XMLSerializer()).serializeToString(item.firstChild);
Puoi fare un paio di cose: scrivere una funzione che ti gestisca entrambe
le casistiche, oppure - solo su browser gecko tipo firefox, netscape,
mozilla.. - aggiungere la proprietà "xml".
La funzione apparirebbe come qualcosa di questo tipo:
function xmlNodeToString(node){
	if (typeof node.xml=="string"){
		return node.xml;
	}else if (window.XMLSerializer){
		return (new XMLSerializer()).serializeToString(node);
	}
	return null;	
}
L'aggiunta della proprietà xml in gecko, invece:
if (window.Element && 
	window.Element.prototype && 
	window.Element.prototype.__defineGetter__ &&
	typeof window.Element.prototype.xml=="undefined"){
	Element.prototype.__defineGetter__("xml", function () {
	   return (new XMLSerializer()).serializeToString(this);
	});
}
-- 
ZER0 
~ "Sai che ogni volta che vedo un tramonto mi girano i coglioni perché
è passato un'altro giorno."

piu' semplicemente puoi fare cosi'
var item = req.responseText;
blaBla.i.innerHTML = item;
ciao

grazie ad entrambi!
@zero: se una moda spinge i programmatori ad imparare ed utilizzare
tecnologie che prima, pur esistendo, erano poco conosciute, non ci vedo
niente di male (anzi, l'utente finale potra' godere di applicazioni web
piu' funzionali e semplici da usare).

 niente di male 
Ma perché cambiare nome all'acqua calda, dico io. Solo perché "acqua calda"
non fa "trend"? Allora si ricade nel discorso della questione di marketing.
E questo, non č l'atteggiamento che ha un programmatore.
Ed il punto da te sollevato, ne é un'altro: un programmatore non dovrebbe
seguire "le mode". Dovrebbe, anzi, essere un passo avanti ad esse.
-- 
ZER0 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 seguire "le mode". Dovrebbe, anzi, essere un passo avanti ad esse.
il programmatore non e' l'interface designer. occhio a non confonderli.
il programmatore mette in pratica quello che gli viene detto di fare.
puo' scegliere la soluzione o tecnologia, ma sempre e solo
limitatamente rispetto al suo obbiettivo (non e' lui a deciderlo).

 il programmatore mette in pratica quello che gli viene detto di fare.
Attento a non fare confusione te. Il programmatore non è né uno schiavo, né
un mero manovale. Il programmatore, il vero programmatore, è un "libero
pensatore", un "pioniere". Uno sperimentatore.
Non mi confondere la "bassa manovalanza" che sempre più spesso si trova
nelle software house, con ciò che è un programmatore. Un vero
programmatore.
Quello a cui ti riferisci tu è un "mangia-quiche" (cit).
BTW, a prescindere da questa distinzione, ciò che hai detto non ha nulla a
che vedere con l'argomento da me sollevato. Un programmatore (o anche un
mangia-quiche) non dovrebbe "seguire le mode". Anche perché se lo fa, non è
competitivo. E' competitivo solo se sta avanti un passo.
Ancor prima che qualcuno desse un nuovo nome all' "acqua calda" (ajax, ma
di esempi recenti ce ne sono a bizzeffe), questa veniva usata da anni. 
Questa "mania" di dare nomi a destra e manca è propria del marketing, non
della programmazione. Non è un atteggiamento che ha un programmatore.
Questo del marketing se ne strafotte (ed è uno dei motivi, di contro, del
perché i bravi programmatori non si sanno mai "vendere" come si deve).
-- 
ZER0 
~ "La prova che l'universo ha deciso di ignorarti e' quando non ricevi piu'
e-mail neppure dagli spammer."

 che roba sarebbe?
L'uso di XmlHttpRequest in Javascript. Ajax sta per "Asynchronous
Javascript and XML", nome tra l'altro "falso" o "fuorviante" (uno dei punti
forti di JS/XmlHttpRequest è che può essere sincrono invece di asincrono).
Ho trovato questo link che te lo spiega meglio di quanto potrei fare io:
http://en.wikipedia.org/wiki/AJAX
Inutile dire che mi trovo perfettamente d'accordo con questo paragrafo:
"It has been pointed out by some people that the AJAX technologies did not
have a common name before, and they therefore welcomed a unifying term for
the process. This, however, is not entirely true, since various developers
have been calling the concept XMLHTTP for years. It is also reported that
the Google engineers who have created the most prominent applications using
this technique consider their technologies as 'Javascript'".
Del resto, ho anche smesso di utilizzare la dicitura "DHTML", se non per
riferimenti alla "vecchia scuola".
-- 
ZER0 
~ "Non ci si uccide per amore, basta aspettare."
"Allora non mi uccido per amore, mi uccido per impazienza." (A.O. e M.T.)