Newsgroup: it.comp.lang.javascript
Titolo: Xml e Javascript: il valore di un nodo

Ciao a tutti,
pochi post fa è stato sollevato lo stesso problema, io sto testando da un
po', ma non riesco ad accedere al valore di un nodo. Avendo:
<node>Catch me, if you can ;o)</node>
Se faccio:
objXml.getElementsByTagName("node")[0].text funziona su ie ma non su
firefox (e qui sul ng ho trovato un vecchio post di zer0 che diceva: "text
non è una proprietà standard di XML, se ben ricordo è proprietaria solo di
IE."). E ok, allora provo:
objXml.getElementsByTagName("node")[0].textContent ma funziona su firefox
e non su ie.
Per trovare una proprietà crossbrowser, ho fatto:
var properties="";
for (var propertie in objXml.getElementsByTagName("node")[0]) {
	properties+=propertie+":
"+objXml.getElementsByTagName("node")[0][propertie];
}
document.write(properties);
objXml è naturalmente l'oggetto con il riferimento al file xml (activeX o
createDocument).
Ma mentre ie assolutamente non mi dice nulla (perché?), firefox mi da di
tutto: metodi e proprietà ma tra questi solo textContent fa al caso mio
(ma come ho poco fa riportato non funziona su ie, risponde undefined).
Sbirciando sul ng ho trovato nodeValue, ma sia ie che firefox danno null
con objXml.getElementsByTagName("node")[0].nodeValue.
PS: avendo un file xml del tipo:
<?xml version="1.0"?>
<root>
	<node>Catch me, if you can!</node>
</root>
Ho provato a fare:
objXml.getElementsByTagName("root")[0].getElementsByTagName("node")[0].nodeValue
ma da null lo stesso (ho pensato, magari devo dargli il percorso
dell'"albero" e invece no).
Come posso fare?
-- 
Luke S.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 <node>Catch me, if you can ;o)</node>
Prova
objXml.getElementsByTagName("node")[0].firstChild.nodeValue
-- 
Nando [?]
Ex-Apostolo della Ex-Prova

 objXml.getElementsByTagName("node")[0].firstChild.nodeValue
Uao! Funziona... ma non capisco come mai. firstChild non sarebbe il primo
nodo figlio? E <node> non ha figli... sai spiegarmi come mai? ...sempre
per il solito discorso che è meglio imparare a fare una cosa piuttosto che
copiare e incollare ;o)


 Uao! Funziona... ma non capisco come mai.
Anche se parla del DOM dell'HTML il discorso vale anche per XML (la differenza
č che le API di IE per l'XML sono piů avanzate rispetto alle API per l'accesso
al DOM di un documento HTML)
http://groups.google.it/group/it.comp.lang.javascript/browse_frm/thread/82a3217de6c1f8ea/26c1467b50553edb
Oppure:
http://groups.google.it/group/it.comp.lang.javascript/browse_frm/thread/548b39d7296eda90/6a5ebd79b6cc1f07
-- 
- Venimmo, vedemmo... e lo inculammo!


http://groups.google.it/group/it.comp.lang.javascript/browse_frm/thread/548b39d7296eda90/6a5ebd79b6cc1f07
Ah ecco perché! I testi contenuti in un nodo sono a loro volta dei nodi. E
infatti ora che ci penso, un ciclo all'interno di un nodo (contenente
altri nodi) con firefox appariva:
#text
nodo1
#text
nodo2
ecc.
Mentre explorer visualizzava solo i nodi (boh?! perché?) Comunque, essendo
il testo a sua volta un nodo (figlio) per leggerlo è necessario accedere
al nodo figlio (childNodes[x]) e poi al suo valore con nodeValue.
Ho capito bene? Se sì, grazie a te e a Nando :o)


 al nodo figlio (childNodes[x]) e poi al suo valore con nodeValue.
Basta firstChild, se il nodo non è interrotto da altri nodi non di testo.
Anche perché, ti ripeto, la gestione dei nodi da parte di IE è diversa,
soprattutto in HTML.
Per farti un esempio chiaro e lampante, esegui questo codice sia su IE che su
FF:
<div id="test">
	<div>Digory</div>
	<div>Jadis</div>
</div>
<script type="text/javascript">
	alert(document.getElementById("test").childNodes.length)
</script>
-- 
- Vuoi tu questo corpo?
- E' una domanda trabocchetto?