Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    [Java] XML - DOM. Come leggere un file XML ed ottenere il relativo Document.

    Ciao.
    Stò cominciando ad utilizzare i file XML in una mia applicazione. Ho scaricato il package per l'utilizzo di DOM (Xerces) e dalle prove effettuate sembra funzionare anche bene per i miei scopi.
    Mi sono quindi documentato sull'utilizzo della tecnologia XML sotto Java e ho letto il capitolo a riguardo sul Mokabook. Tutto molto interessante... ma non è completo come credevo!!! Da nessuna parte (nemmeno sulla documentazione relativa al package con gli esempi) ho trovato come leggere un file XML utilizzando DOM. C'è molta documentazione su come creare i file (e ci sono anceh riuscito), ma a me serve, innanzitutto, poter leggere un file!
    Sbirciando qua e là ho trovato questo piccolo pezzettino di codice che il suo lavoro lo fa anche bene:
    codice:
    DOMParser parser = new DOMParser();
    parser.parse("./file.xml");
    DocumentImpl doc = (DocumentImpl) parser.getDocument();
    grazie a questo, infatti, riesco ad ottenere l'oggetto Document che mi permette l'elaborazione del documento XML, ma ha un piccolo inconveniente: a video, quando viene eseguita l'istruzione parser.parse(), compare l'esecuzione del parse() del documento XML. Io vorrei evitare che apparissero istruzioni a video, voglio solo poter recuperare un oggetto DocumentImpl con cui lavorare sul file XML. Come posso fare?

    Grazie anticipatamente.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it L'avatar di Corwin
    Registrato dal
    Jan 2002
    Messaggi
    584
    Uhm... io uso una versione un po' vecchia di Xerces ma quando uso il metodo parse a video non succede niente...
    I don't wanna have to shout it out / I don't want my hair to fall out
    I don't wanna be filled with doubt / I don't wanna be a good boy scout
    I don't wanna have to learn to count / I don't wanna have the biggest amount
    I don't wanna grow up

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Questo è il mio file XML:
    codice:
    <?xml version="1.0"?>
    <CONFIGURAZIONE>
    
       <DATABASE>
    
          <NOME>nomeDB</NOME>
          <NOMEUTENTE>nomeutente</NOMEUTENTE>
          <PASSWORD>password</PASSWORD>
    
       </DATABASE>
    
    </CONFIGURAZIONE>
    E questo è il risultato del metodo parse() (che io non voglio che venga visualizzato):
    codice:
    CONFIGURAZIONE
    #text
    DATABASE
    #text
    NOME
    #text
    #text
    NOMEUTENTE
    #text
    PASSWORD
    #text
    #text


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di Corwin
    Registrato dal
    Jan 2002
    Messaggi
    584


    codice:
    import org.apache.xerces.parsers.DOMParser;
    import org.apache.xerces.dom.DocumentImpl;
    import org.w3c.dom.*;
    import org.w3c.dom.ranges.*;
    import org.xml.sax.SAXException;
    import java.io.IOException;
    
    public class prova {
        
        /** Creates a new instance of prova */
        public prova() {
        DOMParser parser = new DOMParser();
        try {
        parser.parse("http://localhost/web/test2.xml");
        }
        catch (SAXException s)
        {
           s.printStackTrace();
            
        }
        catch (IOException i)
        {
            i.printStackTrace();
        }
        Document doc =  parser.getDocument();
        Element E = doc.getDocumentElement();
        NodeList d = E.getChildNodes();
        for (int x = 0; x<d.getLength(); x++)
        {
           System.out.println(d.item(x).getNodeName());
            
        }
        }
        
        public static void main(String[] args) {
        prova p = new prova();
        }
        
    }
    Con queste istruzioni ottengo più o meno quello che ottieni tu a video... ma se commento la riga
    System.out.println(d.item(x).getNodeName());
    il programma gira ma non stampa assolutamente niente ...
    I don't wanna have to shout it out / I don't want my hair to fall out
    I don't wanna be filled with doubt / I don't wanna be a good boy scout
    I don't wanna have to learn to count / I don't wanna have the biggest amount
    I don't wanna grow up

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    STOP alla discussione.
    Che fesso che sono!!! :tongue:

    Mi sono accorto solo ora di aver copiato, senza accorgermene, anche una chiamata ad un metodo che stampa quella roba là...


    Grazie Corwin.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di Corwin
    Registrato dal
    Jan 2002
    Messaggi
    584
    Vabbè, visto che ci siamo... qualcuno sa mi sa spiegare cosa rappresentano le righe con scritto #text ? :adhone:
    I don't wanna have to shout it out / I don't want my hair to fall out
    I don't wanna be filled with doubt / I don't wanna be a good boy scout
    I don't wanna have to learn to count / I don't wanna have the biggest amount
    I don't wanna grow up

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Credo che si riferiscano ai valori dei vari nodi. Infatti nodeName() dovrebbe restituire il nome del nodo. Se il nodo è un TAG restituisce il nome del tag, altrimenti restituisce un valore che indica che si tratta di un valore... almeno credo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di Corwin
    Registrato dal
    Jan 2002
    Messaggi
    584
    Originariamente inviato da LeleFT
    Credo che si riferiscano ai valori dei vari nodi. Infatti nodeName() dovrebbe restituire il nome del nodo. Se il nodo è un TAG restituisce il nome del tag, altrimenti restituisce un valore che indica che si tratta di un valore... almeno credo.


    Ciao.
    Uhm , come parser è un po' meno intuitivo del previsto... grazie per la risposta, cmq...
    I don't wanna have to shout it out / I don't want my hair to fall out
    I don't wanna be filled with doubt / I don't wanna be a good boy scout
    I don't wanna have to learn to count / I don't wanna have the biggest amount
    I don't wanna grow up

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.