Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Lettura nodeValue xml

  1. #1

    Lettura nodeValue xml

    Ciao a tutti, ho un file xml così:

    codice:
    <pagine>
    	<pagina>
    		<paragrafo>Paragrafo 1</paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo>Paragrafo 4</paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo>Testo prova...</paragrafo>
    	</pagina>
    	<pagina>
    		<paragrafo></paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo>altro testo.</paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo></paragrafo>
    		<paragrafo>Testo prova 2.</paragrafo>
    	</pagina>
    </pagine>
    Non riesco a leggere i nodeValue dei paragrafi...

    non so dove sbaglio ecco il codice js:

    Codice PHP:
    var xmlDoc    =     loadXMLDoc("titolo.xml");
    var 
    pagine    =    xmlDoc.getElementsByTagName('pagina');

    for(
    i=0i<pagine.lengthi++)
    {
       for (
    j=0j<pagine[i].childNodes.lengthj++) 
       { 
              
    alert(pagineFiaba[i].childNodes[j].nodeValue);
       } 

    Il ciclo itera per il giusto numero di paragrafi, ma nelle popup non c'è il testo dei paragrafi...
    Non vorrei che si bloccasse per via di paragrafi vuoti...anche se non credo che il problema sia proprio lì...
    Mi aiutate? Sto impazzendo...

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    dove è definita la variabile pagineFiaba[] ?

  3. #3
    Codice PHP:
    var xmlDoc    =     loadXMLDoc("titolo.xml"); 
    var 
    pagine    =    xmlDoc.getElementsByTagName('pagina'); 

    for(
    i=0i<pagine.lengthi++) 

       for (
    j=0j<pagine[i].childNodes.lengthj++)  
       {  
              
    alert(pagine[i].childNodes[j].nodeValue); 
       }  

    Scusa errore di trascrizione... il codice è questo sopra... Ma continua a non andare anche correggendo il nome dell'array...

    Come devo fare?

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da Vincent
    Come devo fare?

    fai dei console.log per controllare che i nodi siano validi e non vuoti

    codice:
    var xmlDoc    =     loadXMLDoc("titolo.xml"); 
    console.log(xmlDoc);
    var pagine    =    xmlDoc.getElementsByTagName('pagina'); 
    console.log(pagine, pagine.length);
    
    for(i=0; i<pagine.length; i++) 
    { 
       for (j=0; j<pagine[i].childNodes.length; j++)  
       {  
              console.log(i, pagine[i].childNodes.length);
              alert(pagine[i].childNodes[j].nodeValue); 
       }  
    }
    controlla se qualcuno di quelle variabili è vuota, undefined o uguale a 0

  5. #5
    codice:
    <pagina>​
    <paragrafo>​Paragrafo 1​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​Paragrafo 4​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​Testo prova...​</paragrafo>​
    </pagina>​
    , 
    <pagina>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​altro testo.​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​</paragrafo>​
    <paragrafo>​Testo prova 2.​</paragrafo>​
    </pagina>​
    ] 2
    
    17 0 17
    17 1 17
    Ecco cosa esce in console... ma io non ci capisco niente.

  6. #6
    la cosa più strana è che accedo al file xml sempre nello stesso modo. Per esempio quando devo accedere ad un nodo faccio così:

    Codice PHP:
    var xmlDoc    loadXMLDoc("titolo.xml");
    var 
    x         xmlDoc.getElementsByTagName('nome');
    for(
    i=0i<x.lengthi++)
    {
       
    variabiliValue.push(x[i].childNodes[0].nodeValue);
       
    //alert(variabiliValue[i]);

    L'unica differenza è che gli dico di andare a prendere direttamente gli elementi con tag nome.

    Ma se facessi la stessa cosa con paragrafo, come faccio a distinguere i paragrafi nelle pagine?

    Cioè credo a questo punto che il problema sia nel fatto che non vado diretto al tag desiderato ma al tag pagina che contiene i vari elementi paragrafo... Non so che dire

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    vado a naso
    dentro pagina hai 8 nodi paragrafo
    la console ne sta contando invece 17
    il che mi porta a pensare che stai cercando di leggere il .nodeValue di qualcosa che non c'è

    quindi modifica di nuovo il tuo codice così e riporta il valore della console

    codice:
    var xmlDoc    =     loadXMLDoc("titolo.xml"); 
    var pagine    =    xmlDoc.getElementsByTagName('pagina'); 
    
    for(i=0; i<pagine.length; i++) 
    { 
       for (j=0; j<pagine[i].childNodes.length; j++)  
       {  
              console.log(pagine[i].childNodes[j].nodetype, pagine[i].childNodes[j].nodeValue); 
              // ^---- stampa il nodetype e il nodevalue 
       }  
    }
    se ho intuito il problema la console dovrebbe riportarti alternativamente

    3
    1 <stringa>
    3
    1 <stringa>

    e così via.

  8. #8
    mi compare così per 34 volte:
    __________________________________________________ __
    undefined "
    "
    __________________________________________________ __
    undefined null
    __________________________________________________ __

  9. #9
    era nodeType con la T e non t.... corretto questo stampa così sempre 17 + 17 quindi 34 volte:
    ________________________________________
    3 "
    "
    ________________________________________
    1 null
    ________________________________________

  10. #10
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da Vincent
    era nodeType con la T e non t.... corretto questo stampa così sempre 17 + 17 quindi 34 volte:
    ________________________________________
    3 "
    "
    ________________________________________
    1 null
    ________________________________________
    ok

    3 significa che sta trovando un nodo testo che in questo caso è lo spazio tra
    <pagina> e <paragrafo>
    oppure tra
    </paragrafo>...</paragrafo>

    mentre 1 è il nodo di tipo elemento (ovvero il tuo paragrafo)

    quindi dentro il ciclo più interno ti basta aggiungere

    codice:
    if (pagine[i].childNodes[j].nodeType == '1') {
      alert(pagine[i].childNodes[j].nodeValue); 
    }
    nel tuo caso i paragrafi (e quindi gli alert) sono tutti vuoti tranne due per pagina

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.