Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Scrittura XML, potreste aiutarmi a capire cosa fa di preciso?

    Ciao Ragazzi, mi servirebbe una mano per capire come funziona quest porzione di codice per la scrittura/aggiornamento di un file xml
    è un piccolo programmino per la scrittura in un file xml di dvd
    nello specifico questo codice viene usato sia per la scrittura(creazione di un nuovo dvd da mettere in coda) sia per l'aggiornamento, cioè se mentre sto visualizzando tutti i dati di questo dvd dalla ricerca, posso cambiare qualche attributo e aggiornarlo.

    Avrei bisogno di capire cosa fa di preciso fino all'Xmloutputter.

    Mi potreste aiutare?

    codice:
    public static void dvd() {        
    Element element = new Element("prodottidvd");
    Document dvdDoc = new Document(element);
            try {
                // LISTA DVD
                Iterator it = LeggiXML.getDvd().iterator();
                while (it.hasNext()) {
                        ProdottoDvd dvd = (ProdottoDvd) it.next();
                        Element dvdElement = new Element("prodottodvd");
                        element.addContent(dvdElement);
                        dvdElement.addContent(new Element("id").addContent(dvd.getId()));
                        dvdElement.addContent(new Element("titolo").addContent(dvd.getTitolo()));
                        dvdElement.addContent(new Element("regista").addContent(dvd.getRegista()));
                        dvdElement.addContent(new Element("tempoesecuzione").addContent(dvd.getTempoEsecuzione()));
                        dvdElement.addContent(new Element("disponibile").addContent(dvd.getDisponibile()));
                        dvdElement.addContent(new Element("commento").addContent(dvd.getCommento()));
                    }    
               XMLOutputter outputter = new XMLOutputter();
               outputter.setFormat(Format.getPrettyFormat()); 
               File file = new File("XML/file_dvd.xml");
               outputter.output(dvdDoc, new FileOutputStream(file));
               JOptionPane.showMessageDialog(null, "Aggiornamento DVD avvenuto con successo.");
            }catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Errore nell'aggiornamento di un DVD");
                System.out.println("Scrittura del file fallita");
            }
         }
    Ultima modifica di cicciozza; 29-06-2017 a 12:25

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Mi sembra abbastanza chiaro, quello che viene fatto.

    Inizialmente viene creato un elemento vuoto chiamato "prodottidvd" che verrà usato come radice (root) del documento XML (il costruttore di Document si aspetta un Element da usare come root-element, appunto).

    Quindi viene iterata una lista di DVD e, per ciascun elemento di questa lista, viene creato un elemento vuoto chiamato "prodottodvd" e questo viene aggiunto al root-element.

    Successivamente, a questo nuovo elemento vengono aggiunti 6 elementi: "id", "titolo", "regista", "tempoesecuzione", "disponibile" e "commento", ciascuno con il propio valore.

    Infine, l'intero documento viene salvato su file tramite l'XMLOutputter.

    Il risultato sarà qualcosa del genere:

    codice:
    <?xml version="1.0" ... ?>
    <prodottidvd>
       <prodottodvd>
          <id>...</id>
          <titolo>...</titolo>
          <regista>...</regista>
          <tempoesecuzione>...</tempoesecuzione>
          <disponibile>...</disponibile>
          <commento>...</commento>
       </prodottodvd>
       ...
    </prodottidvd>

    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

  3. #3
    Ciao Lele, intanto grazie.

    Sei stato chiaro.

    Non capisco una cosa però, quel pezzo di codice è usato sia per l'aggiunta di un nuovo Dvd che di un aggiornamento (di un parametro)
    Come fa ad esempio, dato un xml che contiene già alcuni dvd inseriti, ad aggiungerne un altro con id incremetato?

    Come fa poi, a capire che se sto aggiornando un dvd, cioè modificando i parametri (titolo, regista etc) che si tratta proprio di quel dvd e salvarlo?
    Ultima modifica di cicciozza; 29-06-2017 a 17:13

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da cicciozza Visualizza il messaggio
    Non capisco una cosa però, quel pezzo di codice è usato sia per l'aggiunta di un nuovo Dvd che di un aggiornamento (di un parametro)
    Come fa ad esempio, dato un xml che contiene già alcuni dvd inseriti, ad aggiungerne un altro con id incremetato?
    Quel pezzo di codice in realtà NON "aggiorna" in modo incrementale alcunché. Il documento XML è sempre nuovo, ri-creato da zero.
    Lo puoi capire bene dal new Document(element);

    Evidentemente quel LeggiXML.getDvd() (che non posso sapere cosa fa esattamente) fornisce "qualcosa" in più inserito in precedenza non so come ....
    Detto in altre parole, quasi certamente è il "modello" in memoria (o DB) che si aggiorna e quindi vai a ri-creare il documento con qualcosa in più.

    Quote Originariamente inviata da cicciozza Visualizza il messaggio
    Come fa poi, a capire che se sto aggiornando un dvd, cioè modificando i parametri (titolo, regista etc) che si tratta proprio di quel dvd e salvarlo?
    Vedi quanto appena detto. Il LeggiXML.getDvd() fornisce un tot di oggetti ProdottoDvd, ciascuno ha un suo Id, e questo è memorizzato nella struttura XML per ciascun <prodottodvd> . Stop, fine della storia.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    E io che speravo di non doverti dare nuovamente fastidio, anche in "scrittura", dall'altra parte

    Grazie Andbin!

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.