in
La comunità italiana dedicata a Sviluppatori e Architetti IT delle piattaforme Windows

aiuto

Ultimo messaggio ricevuto il 30-01-2006 11.51 da theFool. 3 risposta(e).
Pagina 1 di 1 (4 elemento/i)
Ordina messaggi: Precedente Successivo
  • 28-01-2006 9.13

    • kekko
    • Utente Top 500
    • Registrato il 28-01-2006
    • Messaggi 2
    Ho questo codice ma nn riesco a capire come modificarlo per farlo funzionare per visualizzare il file xml!Sono alle prime armi con l'xme e la programmazione in generale credo ke la soluzione si usare getElementsByTagName  
    ma nn riesco a mettere appunto il codice!

    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Elenco Studenti</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script language="JavaScript" FOR="window" EVENT="ONLOAD" type="text/javascript">
    HTMLCode = " ";
    Document = dsostudenti.XMLDocument;
    // ciclo per memorizzare gli studenti
    for (i=0;
    i < Document.documentElement.childNodes.length;
    i++)
    {
    HTMLCode +=
    ("<span style='font-weight:bold'>Nome : </span>"
    + Document.documentElement.childNodes(i).childNodes( 0).text
    + "<br />"
    + "<span style='font-weight:bold'>Cognome: </span>"
    + Document.documentElement.childNodes(i).childNodes( 1).text
    + "<br />"
    + "<span style='font-weight:bold'>Matricola: </span>"
    + Document.documentElement.childNodes(i).childNodes( 2).text
    + "<br />"
    + "<span style='font-weight:bold'>Titolo di studio: </span>"
    + Document.documentElement.childNodes(i).childNodes( 3).text
    + "<br />"
    + "<span style='font-weight:bold'>Telefono: </span>"
    + Document.documentElement.childNodes(i).childNodes( 4).text
    + "<br />"
    + "<span style='font-weight:bold'>Email: </span>"
    + Document.documentElement.childNodes(i).childNodes( ).text
    + "<p>")
    }

    DisplayDIV.innerHTML=HTMLCode;
    </script>

    </head>

    <body>
    <XML ID="dsostudenti" SRC="esercizio3.xml"></XML>

    <H2>Elenco studenti</H2>

    <DIV ID="DisplayDIV"></DIV>

    </body>
    </html>

    Questo e' il file xml ke dovrebbe stanpare a video

    <?xml version="1.0"?>
    <!-- nome del file esercizio3.xml-->
    <STUDENTI>
    <studente>
    <nome>Mario </nome>
    <cognome>Rossi</cognome>
    <matricola>123456</matricola>
    <titolo_studio>Maturita Classica</titolo_studio>
    <telefono>080-5000</telefono>
    <telefono>080-5000</telefono>
    <email>neri@uniba.it</email>
    </studente>
    <studente>
    <nome>Gianni</nome>
    <cognome>Filippetti</cognome>
    <matricola>129457</matricola>
    <titolo_studio>Altra Laurea</titolo_studio>
    <email>348-5000</email>
    </studente>
    <studente>
    <nome>Francoi</nome>
    <cognome>Neri</cognome>
    <matricola>130459</matricola>
    <titolo_studio>Altra Laurea</titolo_studio>
    </studente>

    </STUDENTI>
    • Log
  • 28-01-2006 21.17 In risposta a

    • theFool
    • Utente Top 10
    • Registrato il 13-07-2005
    • Piacenza
    • Messaggi 127

    Re: aiuto

    Ciao,
    non capisco bene quale sia di preciso il tuo scopo, ad ogni modo il codice da te postato non può funzionare per 2 motivi:
    - all'interno del ciclo for, per ogni nodo figlio del DocumentElement -i nodi studente- cerchi di (o meglio vorresti) referenziarne 6 figli (ovvero: nome, cognome, matricola, titolo_studio, telefono, email) ma nel documento xml non tutti i nodi studente hanno i 6 suddetti nodi figli;
    - inoltre se verfichi il codice che deve recuperare il valore dell'email, noterai che manca l'indice per la seconda chiamata al metodo childnodes;

    Devi limitare il campo d'azione ai soli nodi in comune tra tutti i nodi studente: nome, cognome, matricola, e titolo_studio.

    <script language="JavaScript" FOR="window" EVENT="ONLOAD" type="text/javascript">
     HTMLCode = " ";
     Document = dsostudenti.XMLDocument;
     
     // ciclo per memorizzare gli studenti
     for (i=0; i < Document.documentElement.childNodes.length; i++)
     {
      HTMLCode += ("<span style='font-weight:bold'>Nome : </span>" + Document.documentElement.childNodes(i).childNodes( 0).text + "<br />"
          + "<span style='font-weight:bold'>Cognome: </span>" + Document.documentElement.childNodes(i).childNodes( 1).text + "<br />"
          + "<span style='font-weight:bold'>Matricola: </span>" + Document.documentElement.childNodes(i).childNodes( 2).text + "<br />"
          + "<span style='font-weight:bold'>Titolo di studio: </span>"+ Document.documentElement.childNodes(i).childNodes( 3).text + "<br />");
     }

     DisplayDIV.innerHTML=HTMLCode;
    </script>

    Ciao ciao

     

    • Log
  • 29-01-2006 10.15 In risposta a

    • kekko
    • Utente Top 500
    • Registrato il 28-01-2006
    • Messaggi 2

    Re: aiuto

    Nn c'e nessuno scopo e semplicemete un esercizio di programmazione...Cmq il file xml da visualizzare e quello e nn tutti i nodi <studente> hanno gli stessi figli....nn riesco a capire come visualizzare tramite DOM quel file xml.....
    Grazie ancora per l'aiuto ke mi state dando....
    • Log
  • 30-01-2006 11.51 In risposta a

    • theFool
    • Utente Top 10
    • Registrato il 13-07-2005
    • Piacenza
    • Messaggi 127

    Geeked [8-|] Re: aiuto

    Ciao,
    nei casi di applicazione reale il più delle volte vengono elaborati documenti xml di cui si conosce la struttura (ovvero i tag in essi utilizzati), delegando il controllo di tale conformità strutturale a DTD o schemi xml; lo stesso parser inoltre effettua un minimale controllo sulla struttura, segnalando errori di basso livello (tag non chiusi, caratteri non validi, ecc.).

    Questi due livelli di controllo assicurano che un documento xml sia:
    well-formed (ovvero che il parser non segnali errori di basso livello);
    - valid (ovvero che tale documento rispetta una DTD od uno schema xml preciso);
    Di queste due proprietà la prima è quella vincolante, ovvero un documento per essere valid (conforme ad una struttura) deve essere necessariamente anche well-formed.

    Nel tuo caso non c'è una struttura di riferimento per la quale verificare la validità del documento: ergo è necessario scandirlo con un algoritmo che prescinda dai tag effettivamente utilizzati.
    Il più delle volte per implementare tali algoritmi di analisi, viene utilizzata la tecnica della ricorsione, ossia una funzione che richiama se stessa un numero indefinito di volte; la ricorsione è molto utile e potente, ma è necessario prestare non poca attenzione onde evitare cicli infiniti (o quasi: leggi Stack Overflow...).

    Eccoti un esempio nel quale viene appunto adottata la ricorsione per visualizzare un generico documento xml:

    <html>
     <body onLoad="init();">
     </body>
     <script>
      var s;
      
      function init()
      {
       var xmlDoc;
     
       xmlDoc = new ActiveXObject("MSXML.DomDocument");
       xmlDoc.async = false;
       xmlDoc.load( "esercizio3.xml" );
       
       s = 0; 
       browse( xmlDoc.documentElement );
       delete xmlDoc;
      }
      
      function browse(nd)
      {
       var i;
       var b = document.body;
       
       if( nd.nodeName == "#text" ) {
        b.innerHTML += " = " + nd.nodeValue;
       } else {
        b.innerHTML += "<br>";
        for( i=0; i<s; i++ ) {
         b.innerHTML += "&nbsp;&nbsp;";
        }
        b.innerHTML += nd.nodeName;
     
        s++;
        for( i=0; i<nd.childNodes.length; i++ ) {
         browse( nd.childNodes(i) );
        }
        s--;
       }
      }
     </script>
    </html>

    Per questioni di brevità ho tralasciato l'analisi/visualizzazione degli attributi: prova ad integrarla tu... buon lavoro!

    Ciao ciao

    • Log
Pagina 1 di 1 (4 elemento/i)
Prelevato da http://www.devspy.com/forums/p/4062/4355.aspx
DevSpy.com 6.0 © 2001-2008 - Alcuni Diritti Riservati
Salvo diversa indicazione, tutti i contenuti sono pubblicati sotto licenza "Creative Commons Attribution-Share Alike 3.0"