Autore Topic: trattare dati nel formato xml  (Letto 697 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
trattare dati nel formato xml
« il: 04 Luglio 2013, 22:53:20 »
Mi sorge una curiosità per un argomento letto relativamente a file dati scritti nel formato xml. Ho letto anche in questo forum che è stata realizzata una libreria per permettere la gestione di detto formato. la il componente gb.xml non dovrebbe già di suo permettere la lettura e la scrittura di detti file-dati in maniera trasparente e, perciò, indolore? Perchè è stato necessario costruire un altro componente, il gb.libxml?
 :ciao:
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: trattare dati nel formato xml
« Risposta #1 il: 10 Luglio 2013, 14:07:03 »
Le due librerie sono state costruite su due librerie esterne diverse.
Se non vado errato, la gb.xml è quella più aggiornata...

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: trattare dati nel formato xml
« Risposta #2 il: 10 Luglio 2013, 23:46:28 »
Le due librerie sono state costruite su due librerie esterne diverse.
Se non vado errato, la gb.xml è quella più aggiornata...
Ciò significa che la gb.xml comprende anche la gb.libxml? Pertanto basta attivarne solamente uno, cioè gb.xml?
 :ciao:
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: trattare dati nel formato xml
« Risposta #3 il: 11 Luglio 2013, 10:47:15 »
NO!!!

Sono basate su librerie diverse, sia come costruzione, che come logica. Non sono dipendenti una dall'altra...

Se non ricordo male, la gb.libxml si basa appunto sulla classica libxml (da cui prende appunto il nome), che di solito è già installata nel sistema. La seconda, gb.xml, si basa su un'altra (non ricordo quale).

A suo tempo avevo costruito appunto una libreria in gambas, che forniva uno strato software a livello superiore, che si basava indipendentemente sulle due librerie gambas. Bastava solo cambiare la libreria nell'elenco del progetto. Queste mie classi sono presenti anche in pgDesignerX, dove ne faccio uso appunto per le configurazioni e i file di progetto (basati appunto su xml).

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: trattare dati nel formato xml
« Risposta #4 il: 11 Luglio 2013, 17:16:01 »
Benissimo. Supponiamo ora di dover leggere un file registrato nel formato xml. Mi sembra di capire che occorre attivare entrambi i componenti. A questo punto leggendo un record qualsiasi dal file e volendo poi visualizzare, per es. in una TextBox il contenuto del record, basta semplicemente scrivere TextBox1,text=Recxml (dove Recxml è l'area di transito del file in lettura) o occorre eseguire una sorta di passo di conversione da xml a .txt?
 :ciao:
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: trattare dati nel formato xml
« Risposta #5 il: 12 Luglio 2013, 11:06:07 »
Forse non mi sono spiegato bene...

Le due librerie non possono coesistere, in quanto hanno gli stessi nomi classe, e stessi nomi proprietà.

Nel tuo progetto devi sceglierne una!

Ora, come poi usarle le classi messe a disposizione, è allo stesso tempo semplice, ma non così semplice...  :D

Fondamentalmente, la libreria ha due classi evolute: XmlReader e XmlWriter (se non ricordo male, purtroppo non ho sottomano gambas).
Come si evince dai nomi, una legge e l'altra scrive...

Dipendentemente dalla libreria su cui si basa quella gambas (libxml o l'altra, e non parlo di quelle gambas, ma quelle esterne su cui sono basate le due gambas), la lettura di un file (con XmlReader) carica una struttura di classi interna, con i nomi e le proprietà contenute nel file (vedi tag=valore, come da specifiche xml). Quindi non puoi passare la classe direttamente ad una textbox, perchè gli passeresti un'oggetto, e non il suo contenuto.

La classe di lettura, come anche quella di scrittura, ha una sua gerarchia interna, sia di base che da te definita. Questa struttura, appunto gerarchica, contiene una serie di oggetti con cui, per farla semplice, puoi o viene, definiti una serie di tag (nomi), a cui vengono associati determinati valori (in formato stringa).
Non sò se nella nuova versione abbiano aggiunto altre funzionalità, in particolare di ricerca di un determinato tag, ma quella che avevo costruito io si.
Diciamo che la struttura somiglia molto ad una treeview. Anche questo oggetto ha una struttura logica simile a quella xml, in cui abbiamo un tag principale (alias root), e sotto di esso si possono aggiungere dei figli (con id e descrizione, ovvero nome e valore).