Newsgroup: it.comp.lang.javascript
Titolo: Problemi con XPath, Ajax e feed

Ciao a tutti,
ho scritto una banale pagina web per leggere un feed "autoprodotto":
mediante una Ajax request recupero l'xml, dal quale devo estrarre con
XPath alcuni dati da visualizzare in un semplice div.
Il problema si verifica in seguito alla query XPath, con la quale ho
seleziono una porzione di feed contenente html da visualizzare:
<rss>
 <channel>
  <item>
   <description>
    <span class="contenuto">
     <p>
      <b>testo testo testo testo </b>
     </p>
    </span>
   </description>
	[...]
   </item>
Dato l'xml riportato, con una query del tipo
"/rss/channel/item[1]/description" mi aspetto di ottenere un risultato
simile:
<description>
	<span class="contenuto">
		<p>
			<b>testo testo testo testo </b>
		</p>
	</span>
</description>
...ed effettivamente questo è quanto mi restituisce XMLSpy.
Sul fronte "js" ho utilizzato diversi parser:
- 
http://xmljs.sourceforge.net/index.html
sembra non andare d'accordo con prototype di Ajax... :-/
- 
http://www-xray.ast.cam.ac.uk/~jgraham/mozilla/xpath-tutorial.html
purtroppo la versione embedded di Mozilla per Java Media Framework non
interpreta la evaluate
- 
http://mcc.id.au/xpathjs/
questo sarebbe perfetto
...ma tutti mi restituiscono sempre e solo "testo testo testo testo "
senza i tag "di contorno".
Il mio scopo sarebbe recuperare la porzione di xml interessata e
visualizzarla in un div con un semplice innerHTML, ma ovviamente mi
sfugge qualche passaggio.
Grazie a tutti.
CIAO!

 interpreta la evaluate
Ma tu dove la devi usare? Tutte le librerie che hai citato penso che per
Mozilla usino la evaluate.
Ciao.
-- 
--
FABIO SERRA
Per rispondere in e-mail sostituire "invalid" con "faser"
*Questo testo deve essere valutato secondo il senso della RFC-3*
------------------

 visualizzarla in un div con un semplice innerHTML
In tal caso, supponendo che "xmldoc" contenga il documento XML di cui hai
parlato, avrai qualcosa di questo tipo:
	var 	xpath="/rss/channel/item[1]/description/*",
		nd=null;
 
	if (window.XPathEvaluator){
		var 	pXPE = new XPathEvaluator(),
			nd=pXPE.evaluate(xpath, xmldoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
null).singleNodeValue;
	}else if (typeof xmldoc.selectSingleNode!="undefined"){
		nd=xmldoc.selectSingleNode(xpath);
	}
Ho modificato la query per farti saltare il tag "description", dato che vuoi
recuperare i nodi figli per utilizzarli come nodi HTML.
Una volta ottenuto il primo nodo figlio di "description" (span, in questo
caso), devi trasformare il tutto in "stringa" per poterlo utilizzare come
HTML:
	var html = "";
	if (nd && window.XMLSerializer)
		html = new XMLSerializer().serializeToString(nd);
	else if (nd && nd.xml)
		html = nd.xml)
A quel punto ti basterà impostare la proprietà innerHTML dell'elemento voluto
con la stringa ottenuta.
-- 
"Your sin is beyond the grace of God" ~ Ky Kiske

 incompatibilità e dipendenze) IMHO IE8 supporterà anche questa sintassi.
Scusami ma ti prego di enuclarmi meglio il concetto: stamane non carburo per
un cavolo, e sinceramente della tua frase ho capito veramente poco... 


 incompatibilità e dipendenze) IMHO IE8 supporterà anche questa sintassi.
Scusami ma ti prego di enuclearmi meglio il concetto: stamane non carburo per
un cavolo, e sinceramente della tua frase ho capito veramente poco... 
-- 


con la stringa ottenuta.
"io sono commosso, io ti ringrazio... ti ringrazio... ho la pelle
d'oca... io guarda ZER0 ti darei un bacio sulla fronte ma non posso
farlo..." (cit.)  :-P
Scherzi a parte, grazie mille, tutto perfetto...ero arrivato a sbattere
la testa addirittura su una XSLT!
Grazie ancora, a buon rendere!