Visualizzazione dei risultati da 1 a 2 su 2

Discussione: DocumentBuilderFactory

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    11

    DocumentBuilderFactory

    Salve a tutti,
    qualcuno mi puņ spiegare in modo pratico e teorico che cosa fa questo codice?


    codice:
    percorsoFile = Evento.class.getResource(".").getPath() + NOME_DB.replace("{ID_EVENTO}", idEvento);
             
            File f = new File(percorsoFile);
            if (!f.exists()) {
                f.createNewFile();
                caricaDati();
            } else {
                try {
                    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                    //Carico l'xml e ne leggo il contenuto (i singoli nodi e inizializza ogni singolo evento)
                    Document doc = dBuilder.parse(f);
        
                    if (doc.getElementsByTagName(CAMERA).getLength() > 0) {
                        Element camera = (Element) doc.getElementsByTagName(CAMERA).item(0);
                        NodeList liste = camera.getChildNodes();
                        for (int i = 0; i < liste.getLength(); i++) {
                            if (liste.item(i).getNodeType() == Node.ELEMENT_NODE) {
                                Element lista = (Element) liste.item(i);
                                votiCamera.put(lista.getTagName(), new Integer("0" + lista.getTextContent().trim()));
                            }
                        }
                    }

    Grazie mille.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Partiamo col dire che la prima riga di quel codice č il punto debole di tutta quella roba lą.
    Se l'applicazione č contenuta in un JAR, otterrai una bella eccezione e non funzionerą nulla, ma immagino che non sia questo il caso.

    Cosa fa quella roba lą: verifica se il file denotato da quel nome (percorso della classe + valore della costante "NOME_DB" [quale che sia il suo valore non si sa] in cui viene sostituito a {ID_EVENTO} il valore della variabile "idEvento") esiste. Se non esiste, lo crea e richiama il metodo "caricaDati()".

    Se, al contrario, esiste, allora ci si aspetta che sia un file XML, quindi viene caricato (tramite un DocumentBuilder ottenuto dal DocumentBuilderFactory di default) e lo si scorre. Per ciascun nodo il cui nome č contenuto nella costante "CAMERA" (quale che sia il suo valore non si sa), si prendono tutti i figli e viene caricata di conseguenza una (mappa?) chiamata "votiCamera". Se votiCamera č effettivamente una mappa, allora la chiave di questa mappa č il nome del tag figlio di CAMERA ed il valore un intero ottenuto dalla parserizzazione della concatenazione tra "0" e il valore del tag. Esempio: se c'č un tag di questo tipo

    codice:
    <pippo>5</pippo>
    la mappa viene caricata con chiave "pippo" e valore 5.

    Ciao.
    Ultima modifica di LeleFT; 11-10-2013 a 17:48
    "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

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.