Autore Topic: Caricare Dati Di Un File Xml In Una Hash Table!!!  (Letto 1357 volte)

Offline arma_81_

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
Caricare Dati Di Un File Xml In Una Hash Table!!!
« il: 01 Ottobre 2010, 10:27:48 CEST »
0
Come faccio a caricare i dati di un file xml in una Hash Table ???
Spero che possiate darmi delle dritte.
Grazie  ;-)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #1 il: 01 Ottobre 2010, 11:12:02 CEST »
0
Quello che chiedi tecnicamente è impossibile. O meglio, è impossibile risponderti in generale visto che le due strutture sono incompatibili!

Cosa metteresti come chiave dell'Hash Table? e come Valore?

Come chiave sicuramente non puoi mettere i tag xml.... eccetto se come valore metti la lista del contenuto dei tag che recuperi... ma se i tag contengono altri tag metti un'altra HashTable come valore?

Con le informazioni che hai dato, possiamo dare solo una risposta: Leggendo il file xml e mettendolo in una HashMap!  o_O

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #2 il: 01 Ottobre 2010, 11:45:07 CEST »
0
Come faccio a caricare i dati di un file xml in una Hash Table ???
Spero che possiate darmi delle dritte.
Grazie  ;-)

Come dice MarcoDuff, una risposta "generale" (cioè valida per qualsiasi file XML) non è possibile.

Ma per un file "particolare" magari è possibile: posta un esempio di file XML e di HashTable risultante che vorresti.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline arma_81_

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #3 il: 01 Ottobre 2010, 11:54:58 CEST »
0
Ho 2 tag fondamentali nel mio file xml,reference-note e type.Devo fare ricerche in base a questi campi e poi estrarre delle info da altri tag.
Ma se importo il file jar 1.1.1 di jdom,posso usarlo sotto android ?
Grazie delle info ...  ;-)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #4 il: 01 Ottobre 2010, 12:03:17 CEST »
0
Ma se importo il file jar 1.1.1 di jdom,posso usarlo sotto android ?

Si.

Offline arma_81_

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #5 il: 01 Ottobre 2010, 12:19:18 CEST »
0
Io ho bisogno di caricarmi i dati in un hashmap per fare delle ricerche veloci e poi in output devo stampare delle cose.E' fattibile ? Grazie delle dritte ...  ;-)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #6 il: 01 Ottobre 2010, 12:45:39 CEST »
0

Offline arma_81_

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #7 il: 04 Ottobre 2010, 11:54:08 CEST »
0
Ho questo file xml che devo caricare in memoria,formato da tanti elementi chord.
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<chords>
   <chord>
    <referenceNote>C</referenceNote>
    <type>major</type>
     <details>
      <name>Cmajor</name>
      <intervals>1,3,5</intervals>
      <notes>C,E,G</notes>
     </details>
    <reversechord>EMPTY</reversechord>
    <midi>MIDI_FILES/CHORDS/Cmajor.midi</midi>
   </chord>
</chords>

Ho il mio bean Chord .
Codice (Java): [Seleziona]
public class Chord  {
                public String getReferenceNote() {
                return referenceNote;
        }

        public void setReferenceNote(String referenceNote) {
                this.referenceNote = referenceNote;
        }

        public String getType() {
            return type;
        }

        public void setType(String type) {
            this.type = type;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getIntervals() {
            return intervals;
        }

        public void setIntervals(String intervals) {
            this.intervals = intervals;
        }

        public String getNotes() {
            return notes;
        }

        public void setNotes(String notes) {
            this.notes = notes;
        }

        public String getMidi() {
            return midi;
        }
       
        public String getReversechord() {
            return reversechord;
        }

        public void setReversechord(String reversechord) {
            this.reversechord = reversechord;
        }
       
        public void setMidi(String midi) {
            this.midi = midi;
        }
     
        public String toString() {
            return "*** CHORD *** " +
                            "\nreferenceNote=" + referenceNote  +
                            "\ntype=" + type +
                        "\nname=" + name +
                        "\nintervals="+ intervals +
                        "\nnotes=" + notes +
                        "\nreversechord=" + reversechord +
                        "\nmidi=" + midi;
        }
       
        private String referenceNote;
        private String type;
        private String name;
        private String intervals;
        private String notes;
        private String reversechord;
        private String midi;

}


Questa è la mia classe java,che devo adattare per android.In base a 2 elementi chiave (reference e type) devo potere fare ricerche nella hash table e visualizzare i dettagli in output.Ho importato jdom.jar sotto il mio progetto android.Spero potrete darmi qualche dritta.Grazie ...  ;-)

Codice (Java): [Seleziona]
public class ChordsBuilderChords {
       public ChordsBuilderChords() {
           buildDocumentTree();
       }

       private void buildDocumentTree() {
                try {
                        SAXBuilder builder = new SAXBuilder();
                        Document document = builder.build(new File("XML_FILES/chords.xml"));
                       
                        root = document.getRootElement();
                } catch(JDOMException ex) {
                        ex.printStackTrace();
                } catch(IOException ex) {
                        ex.printStackTrace();
                }
        }
             
    private Element root;


public Hashtable<String,Chord>build (){
        return getChordsFromXML();
}

private Hashtable<String,Chord> getChordsFromXML() {
        Hashtable<String,Chord> chords = new Hashtable<String,Chord>();
        List chordElementList = root.getChildren();
       
         for (int i=0;i<chordElementList.size();i++){
                Element chordElement = (Element) chordElementList.get(i);      
                Chord c = getChordFromXML(chordElement);
                String key = c.getName()+c.getType();
                chords.put(key,c);
       
         }
               
        return chords;
}

   private Chord getChordFromXML(Element chordElement) {
           Chord c = new Chord();
       
           c.setReferenceNote(chordElement.getChildText("referenceNote"));
           c.setType(chordElement.getChildText("type"));
       
           Element detailsElement = chordElement.getChild("details");

           c.setName(detailsElement.getChildText("name"));
           c.setIntervals(detailsElement.getChildText("intervals"));
           c.setNotes(detailsElement.getChildText("notes"));
       
           c.setReversechord(chordElement.getChildText("reversechord"));
           c.setMidi(chordElement.getChildText("midi"));
           return c;
   }


  public static void main (String argv[]){
         ChordsBuilderChords chordsProof = new ChordsBuilderChords();
         chordsProof.build();
         Hashtable h = new Hashtable(chordsProof.getChordsFromXML());
         
         Enumeration keys = h.keys();
         while (keys.hasMoreElements()) {
           Object key = keys.nextElement();
           Object value = h.get(key);
           System.out.println(value.toString());
           
        }
  }
}

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #8 il: 04 Ottobre 2010, 12:04:15 CEST »
0

Offline arma_81_

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #9 il: 04 Ottobre 2010, 12:15:21 CEST »
0
Ho  dato già uno sguardo a quel post.Ho caricato come risorsa raw il mio file xml in memoria così :

Codice (Java): [Seleziona]
private void buildDocumentTree() {
            try {
                        final SAXBuilder builder = new SAXBuilder();   
                        final InputSource is = new InputSource(getResources().openRawResource(R.raw.chords));
                        final Document document = builder.build(is);
                        root = document.getRootElement();
                } catch(final JDOMException ex) {
                        ex.printStackTrace();
                } catch(final IOException ex) {
                        ex.printStackTrace();
                }
        }
             
     private Element root;

Ora volevo capire come caricarlo nella hash table e visualizzare i risultati delle ricerche in output.
Spero che potrai darmi qualche dritta,grazie ...

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #10 il: 04 Ottobre 2010, 12:45:23 CEST »
0
Adesso dovresti parsarti il DOM ed inserire nella hashtable in base ai criteri per cui vuoi fare una ricerca.
Visto che parli di 2 elementi chiave, se la ricerca non prevede una ricerca per sottostringhe, potresti crearti un oggetto che ingloba le due chiavi, ed usare il suo hashcode per la ricerca, in modo da poter cercare per un unico valore.
Mi spiego meglio:
se l'accoppiata di valori reference/type è finita, allora crei un oggetto che abbia queste 2 proprietà, e implementi  il metodo hashCode che restituisce l'hash dell'oggetto (in modo che per ogni coppia esista uno ed un solo codice che la identifichi).
Attraversando il DOM del tuo XML, per ogni coppia di chiavi crei il tuo oggetto, prelevi il suo hashCode e lo utilizzi come chiave.

In fase di ricerca, data la coppia, fai la stessa identica cosa: crei l'oggetto, ti prendi l'hashCode e cerchi per quest'ultimo.
Attenzione, ti sto proponendo di creare un oggetto, ma potresti semplicemente creare un metodo per il calcolo dell'hashCode e metterlo da qualche altra parte.

Per quanto riguarda l'attraversamento del DOM, Qlimax ti ha postato il link che fa al caso tuo.


7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline arma_81_

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #11 il: 04 Ottobre 2010, 12:50:12 CEST »
0
Una volta fatto tutto,come carico in una textview i risultati ?
Grazie mille delle info ...  ;-)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #12 il: 04 Ottobre 2010, 12:58:13 CEST »
0
beh....
io non metterei tutto in una text view....
immagino che se ho una serie di risultati li posso mettere in una serie di righe, magari in maniera scrollabile per poter scorrere i vari risultati, quindi si può usare una listview.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline arma_81_

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #13 il: 04 Ottobre 2010, 13:00:03 CEST »
0
Si ma come li recupero dalla mia hashtable e li metto nella listview ?
Ho 5 righe di risultati e basta.
Grazie cmq ...  ;-)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Caricare Dati Di Un File Xml In Una Hash Table!!!
« Risposta #14 il: 04 Ottobre 2010, 13:14:34 CEST »
0
« Ultima modifica: 04 Ottobre 2010, 13:18:42 CEST da 7h38ugg3r »
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/