Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di noos
    Registrato dal
    Jul 2003
    Messaggi
    1,001

    salvare sul DB n nodi XML con java

    ciao, ho il seguente problema

    con un programma creo in output un file xml, dove in una sezione
    si ripete, in base alle esigenze dell'utente, n volte un tag xml

    ad esempio
    <a1>
    <b1>111</b1>
    <b1>222</b1>
    <b1>333</b1>
    <b1>444</b1>
    ...
    ...
    ...
    <bn>nnn</bn>
    </a1>

    a monte non sò quante istanze l'utente può creare per quella sezione

    il mio problema è come faccio in java a mettere dentro un hash table???
    Vola solo chi ha il coraggio di farlo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: salvare sul DB n nodi XML con java

    Originariamente inviato da noos
    il mio problema è come faccio in java a mettere dentro un hash table???
    Come???
    Non ho capito né qual è il tuo problema, né cosa vuoi ottenere... nel titolo parli di salvare su DB dei nodi di un XML... qui parli di inserire (qualcosa?? Cosa?) dentro ad un HashTable...

    :master:


    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
    Utente di HTML.it L'avatar di noos
    Registrato dal
    Jul 2003
    Messaggi
    1,001
    ciao si dal titolo mi sono sbagliato



    devo salvare dei dati, presi da un file xml, in un hash table
    Vola solo chi ha il coraggio di farlo

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ok, quindi ho modificato il titolo... ma continuo a non capire quale sia esattamente il tuo problema. Per memorizzare un dato all'interno di una HashTable si usa il metodo put():

    codice:
    public void put(Object key, Object value);
    key: chiave con cui verrà successivamente recuperato il valore
    value: il valore da memorizzare in corrispondenza della chiave.

    Se magari posti un po' del codice e indichi esattamente dove incontri il problema e, soprattutto, quale problema riscontri, sarà più facile...


    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

  5. #5
    Utente di HTML.it L'avatar di noos
    Registrato dal
    Jul 2003
    Messaggi
    1,001
    file xml

    Codice PHP:
    <?xml version "1.0" ?>

    <TITOLI_PREFERENZA>

    <TITOLO>1</TITOLO>

    <TITOLO>2</TITOLO>

    <TITOLO>3</TITOLO>

    </TITOLI_PREFERENZA>


    codice java

    Codice PHP:
    public class  CheckXmlClass

          
    {

             static public 
    void main(String[] arg)

             {

                      
    Hashtable ht=new Hashtable();

                       
    String key[]=null;

                       
    String value[]=null;

                

                      
    int i;

               try

               {

              

                      
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

                      
    System.out.print("Enter XML File name: ");

                       
    String xmlFile bf.readLine();

                      
    File file = new File(xmlFile);

                       
    System.out.print("file="+file);

               

                       if(
    file.exists())

                       {

                   
    // Create a factory

                       
    DocumentBuilderFactory factory DocumentBuilderFactory.newInstance();

                   
    // Use the factory to create a builder

                       
    DocumentBuilder builder factory.newDocumentBuilder();

                        
    Document doc builder.parse(xmlFile);

                   
    // Get a list of all elements in the document

                        
    NodeList list = doc.getElementsByTagName("*");

                        
    System.out.println("XML Elements: ");

                        
    int len=list.getLength();

                       
    System.out.print("\nlength:"+len);

                        for (
    i=0i<leni++)

                       {

                     
    // Get element

                       
    Element element = (Element)list.item(i);

         

                        
    key[i]= element.getNodeName();

                        
    value[i]=element.getTextContent();

         

                       
    ht.put(key[i], value[i]);

                       }

                  

           

                

                 else

                       {

                       
    System.out.print("   File not found!");

                       }

                  }

               catch (
    Exception e)

               {

                 
    System.exit(1);

               }

             } 
    Vola solo chi ha il coraggio di farlo

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ok, dal codice Java si evince che stai usando le API di JAXP per il parsing del documento con approccio DOM. Vuol dire che il parser ti fornisce un Document. E in sostanza significa che sei tu che devi "navigare" dentro questo albero di nodi per trovare ed estrarre quello che ti serve.

    E ti dico subito che non ti conviene affatto usare getElementsByTagName("*"). La struttura del documento XML ovviamente la devi sapere. Cioè devi sapere che c'è una radice <TITOLI_PREFERENZA> che contiene dei <TITOLO>.

    Quindi ti conviene prendere l'elemento della radice:

    Element radice = doc.getDocumentElement();

    Poi dalla radice ottieni un NodeList dei figli con getChildNodes(), iteri sulla lista, per ogni nodo verifichi che sia di tipo Element e che abbia nome "TITOLO". Se così, prendi il suo primo figlio. Ti aspetti che sia un nodo di "testo", quindi verifichi se è così e poi prendi il valore del testo.
    Questa che ti ho detto è la pratica per il controllo più "stretto" sulla struttura.

    Certo ... potresti anche fare: doc.getElementsByTagName("TITOLO") ma così non controlleresti anche la correttezza della struttura.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di noos
    Registrato dal
    Jul 2003
    Messaggi
    1,001
    grazie x la risposta


    domanda ma come faccio a salvare N nodi xml, con lo stasso tag, dentro l'hash table?????
    Vola solo chi ha il coraggio di farlo

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da noos
    come faccio a salvare N nodi xml, con lo stasso tag, dentro l'hash table?????
    Beh, parli di hash table ma non hai specificato che cosa ci deve essere come chiave e cosa come valore.
    Gli Element <TITOLO> hanno un contenuto testo ... ok. Presumo siano questi i valori nella hash table?? E come chiavi???

    Perché le cose sono due: o non hai compreso come funziona, in generale, una hash table oppure non è l'approccio giusto usare una hash table in questo caso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di noos
    Registrato dal
    Jul 2003
    Messaggi
    1,001
    ciao, allora il mio problema è salvare questi dati, provenienti da un file .xml, in un db

    come scritto prima, il file xml è strutturato così

    riporto solo la sezione che m'interessa in questo caso

    Codice PHP:
    <?xml version "1.0" ?>

    <TITOLI_PREFERENZA>

    <TITOLO>1</TITOLO>

    <TITOLO>2</TITOLO>

    <TITOLO>3</TITOLO>

    </TITOLI_PREFERENZA>
    dove chiave è <TITOLO>
    E VALORE è 1, 2, 3 ECC


    premesso che non sono un esperto di java
    ho questo problema lasciato da un mio ex-collega

    ho letto che non è possibile utilizzare un hashtable se i dati hanno la stessa chiave, anche se il valore è differente, infatti se inserisco 3 volte un oggetto con la stessa chiave , ottengo che solo l'ultimo viene memorizzato (come succede adesso).

    sai come posso risolvere????

    grazie x la pazienza
    Vola solo chi ha il coraggio di farlo

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da noos
    dove chiave è <TITOLO>
    E VALORE è 1, 2, 3 ECC
    Allora dovresti chiarirti un pochino le idee su cosa vuoi fare. In una "map", in generale, non ci possono essere chiavi duplicate. Fin qui credo lo sai già.

    Poi è vero che i 3 tag che hai mostrato nel documento hanno nome "TITOLO", quindi tutti lo stesso nome. Ma è anche vero che nell'albero dei nodi nel Document, avrai 3 oggetti org.w3c.dom.Element ovviamente differenti, ben distinti!!!
    Quindi vuoi mettere come chiave l'oggetto Element?? Allora sì, in tal caso avrai 3 entry distinte nella hash table. Ma ..... a cosa ti servirebbe???
    Vuoi mettere come chiave il nome del tag?? Essendo uguali puoi intuire subito che non avrai mai 3 entry distinte!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.