Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema Lettura Xml

  1. #1

    Problema Lettura Xml

    Sto impazzendo ho questo XML (l'ho ridotto!!...)

    <?xml version="1.0"?>
    <channels>

    <channel id="c1" caption="LISTA1">
    <menuitem id="1">
    <caption>Sito1</caption>
    <link>http://www.sito1.it/</link>
    </menuitem>

    <menuitem id="2">
    <caption>sito2</caption>
    <link>http://www.sito2.it</link>
    </menuitem>

    </channel>

    <channel id="c2" caption="LISTA2">
    <menuitem id="1">
    <caption>Sito1</caption>
    <link>http://www.sito1.it/</link>
    </menuitem>

    <menuitem id="2">
    <caption>sito2</caption>
    <link>http://www.sito2.it</link>
    </menuitem>

    </channel>

    e questo Javascript per recuperare i valori e attributi:

    var CHANNEL = xmlDoc.getElementsByTagName("channel");

    for (var i=0; i < CHANNEL.length; i++) {

    var MENUITEM = CHANNEL.item(i).getElementsByTagName("menuitem");

    var NOMECANALEID = CHANNEL.item(i).getAttribute("id");
    var NOMECANALE = CHANNEL.item(i).getAttribute("caption");
    alert(NOMECANALEID);
    alert(NOMECANALE);

    for (var j=0; j < MENUITEM.length; j++) {
    var NOMECAPTION = MENUITEM.item(j).getAttribute("caption");
    var NOMELINK = MENUITEM.item(j).getAttribute("link");
    alert("uno: " + NOMECAPTION);
    alert("DUE: " + NOMELINK);
    }
    }

    i primi 2 alert recuperano perfettamente gli ATTRIBUTI "caption" e "id"

    Gli ultimi alert dovrebbero mostrarmi i VALORI dei NODI "caption" e "link"
    ma il risultato e NULL???

    qualcuno sa spiegarmi il perchè dove sbaglio??

    grazie

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    getAttribute restituisce il valore dell'attributo specificato.
    Tu invece devi recuperare il valore di un nodo. Il passaggio è un po' più complesso:
    codice:
    var NOMECAPTION = MENUITEM[j].getElementsByTagName("caption")[0].childNodes[0].nodeValue;
    var NOMELINK = MENUITEM[j].getElementsByTagName("link")[0].childNodes[0].nodeValue;
    Dovrai usare sempre getElementsByTagName tenendo conto che ti sarà restituita una lista di elementi (anche se c'è un solo elemento), perciò dovrai recuperare innanzitutto il primo elemento per "caption" (e analogamente per "link"). Avrai una roba del genere:
    codice:
    MENUITEM[j].getElementsByTagName("caption")[0]
    Questo passaggio ti restituisce il primo (e unico) elemento "caption" dal quale devi estrapolare il valore. Per lo stesso principio, di cui sopra, si otterrà sempre una lista anche se questo è un nodo testuale (teoricamente potresti avere qualsiasi altro nodo dentro caption).
    Per recuperare il valore testuale devi usare la proprietà childNodes specificando il valore 0:
    codice:
    MENUITEM[j].getElementsByTagName("caption")[0].childNodes[0]
    A questo punto puoi leggere il valore testuale usando la proprietà nodeValue:
    codice:
    MENUITEM[j].getElementsByTagName("caption")[0].childNodes[0].nodeValue
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3

    ciao

    Grazie per la risposta KillerWorm!

    ma sarò poco preparato ma non sono riuscito ottenere quei due alert!!!
    sempre "null"....

    una spiegazione un po più "pratica" :-)???

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.