Visualizzazione dei risultati da 1 a 10 su 16

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Ho visto bene come funziona, senza scrivere codice.
    Ripeto non trovo tra le funzionalità di SAX la possibilità di leggere i TAG (senza saper i lori nomi).
    Scusa, ma che vuol dire questo?

    Un file XML è composto da elementi, attributi e valori: se lo leggi, è per acquisire queste informazioni!

    Puoi procedere leggendo elementi specifici per nome o in base alla posizione, ad esempio usando XPath, presupponendo di sapere già dove si trovano le informazioni che ti interessano, allo stesso modo con cui si andrebbe a navigare in un file system spostandosi in una directory precisa, indicata per nome, e poi in una sottodirectory, sempre per nome, e indirizzando uno specifico file, per fare una analogia.

    Oppure, usando l'approccio SAX, si legge il file progressivamente, individuando i nodi che lo compongono, che di volta in volta sono elementi, attributi, valori, ancora elementi, attributi, valori, spazi, commenti... dipende dalla configurazione. In sostanza, non si indirizzano elementi specifici, come con XPath, ma ci si lascia guidare dalla struttura del file che viene progressivamente scansionato dicendoci di volta in volta gli elementi che si incontrano (come si chiamano, di che tipo sono, che valore contengono, ecc.).

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Nel link suggerito si usa switch(qname) che pressuppone di sapere il nome qname.
    E' ovvio. Se tu leggi un file XML, lo fai per leggere i dati che sono all'interno, quindi qualunque sia il motivo o la modalità con cui lo scansioni, se direttamente (parsandolo tutto) oppure progressivamente (con SAX), in qualche modo farai uso dei "nomi delle cose", o per gestirle in un certo modo, o per salvarle, o per farci quello che vuoi.

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Inoltre non trovo la possibilità di estrarre tutte le liste ordinate dei nodi di un nodo padre, come ho chiesto.
    Non c'è una "possibilità di estrarre"... c'è una sola e unica lettura di file XML e del suo contenuto, fatta in un modo oppure in un altro, durante la quale sarai tu ad acquisire le informazioni che si trovano nel file e metterle in una lista, in un dizionario, in una coda, una pila, in un database o dove vuoi.

    Non devi pensare a come erroneamente le cose debbano funzionare e chiedere perché non funzionano come credi, ma al contrario devi capire come funzionano, e da lì come utilizzarle per fare ciò che ti serve.

    Un file XML è solo un file di testo. E' come avere un CSV: puoi decidere di leggerlo tutto e di posizionarti alla riga X, oppure di leggere riga per riga e decidere cosa farne di volta in volta in base a quello che ci trovi dentro. L'XML è uguale, solo che al posto delle righe ci sono elementi, ma le procedure sono analoghe. Dove poi metti i dati, è un'altra questione. Quello che ne fai dei nomi degli elementi e/o dei valori contenuti è un'altra questione ancora. Questo è il codice che dovrai scrivere interfacciandoti con la classe che, nel modo più congeniale, ti consente di esplorare il documento XML di riferimento. Non ci sono altre questioni.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  2. #2
    Quote Originariamente inviata da alka Visualizza il messaggio
    Scusa, ma che vuol dire questo?

    Un file XML è composto da elementi, attributi e valori: se lo leggi, è per acquisire queste informazioni!

    Puoi procedere leggendo elementi specifici per nome o in base alla posizione, ad esempio usando XPath, presupponendo di sapere già dove si trovano le informazioni che ti interessano, allo stesso modo con cui si andrebbe a navigare in un file system spostandosi in una directory precisa, indicata per nome, e poi in una sottodirectory, sempre per nome, e indirizzando uno specifico file, per fare una analogia.

    Oppure, usando l'approccio SAX, si legge il file progressivamente, individuando i nodi che lo compongono, che di volta in volta sono elementi, attributi, valori, ancora elementi, attributi, valori, spazi, commenti... dipende dalla configurazione. In sostanza, non si indirizzano elementi specifici, come con XPath, ma ci si lascia guidare dalla struttura del file che viene progressivamente scansionato dicendoci di volta in volta gli elementi che si incontrano (come si chiamano, di che tipo sono, che valore contengono, ecc.).


    E' ovvio. Se tu leggi un file XML, lo fai per leggere i dati che sono all'interno, quindi qualunque sia il motivo o la modalità con cui lo scansioni, se direttamente (parsandolo tutto) oppure progressivamente (con SAX), in qualche modo farai uso dei "nomi delle cose", o per gestirle in un certo modo, o per salvarle, o per farci quello che vuoi.


    Non c'è una "possibilità di estrarre"... c'è una sola e unica lettura di file XML e del suo contenuto, fatta in un modo oppure in un altro, durante la quale sarai tu ad acquisire le informazioni che si trovano nel file e metterle in una lista, in un dizionario, in una coda, una pila, in un database o dove vuoi.

    Non devi pensare a come erroneamente le cose debbano funzionare e chiedere perché non funzionano come credi, ma al contrario devi capire come funzionano, e da lì come utilizzarle per fare ciò che ti serve.

    Un file XML è solo un file di testo. E' come avere un CSV: puoi decidere di leggerlo tutto e di posizionarti alla riga X, oppure di leggere riga per riga e decidere cosa farne di volta in volta in base a quello che ci trovi dentro. L'XML è uguale, solo che al posto delle righe ci sono elementi, ma le procedure sono analoghe. Dove poi metti i dati, è un'altra questione. Quello che ne fai dei nomi degli elementi e/o dei valori contenuti è un'altra questione ancora. Questo è il codice che dovrai scrivere interfacciandoti con la classe che, nel modo più congeniale, ti consente di esplorare il documento XML di riferimento. Non ci sono altre questioni.

    Diciamo che mi sa che continuo a usare DOM.
    Ho capito come funziona SAX, ripeto non conosco i nomi dei tag. O meglio li conosco ma non mi metto a specificarli tutti.
    Può darsi che l'agoritmo che ho proposto non sia ottimale ma quantomeno è in grado di parsare il file nel modo che ho richiesto. Non ha senso per me leggere semplicemente il file XML, è richiesto un ordine.
    Risulta più complesso specificare tutte le classi, che non mi occorrono perché uso una classe che le ingloba tutte.
    SAX è ottimo per carità ma per altro.
    Ultima modifica di jabjoint; 28-03-2025 a 20:10
    jabjoint

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Diciamo che mi sa che continuo a usare DOM.
    Ho capito come funziona SAX, ripeto non conosco i nomi dei tag.
    Io direi invece di no, ma ormai ho compreso che è perfettamente inutile, perché non si riesce a proseguire con una conversazione che abbia un senso e che parli di cose tangibili, ossia che si capisca qual è l'obiettivo e il problema specifico.

    DOM e SAX sono solo differenti modalità di leggere il file XML: con il primo, si legge tutto il documento in una volta, e lo si naviga usando nomi e/o degli indici di posizione. Con SAX si può fare lo stesso, ma il file viene letto gradualmente e non nella sua interezza (se hai un file di 2GB, è ovvio quale dei due sia più indicato, ad esempio).

    Ma quello che si fa con uno lo si fa anche con l'altro: la modalità di lettura non pregiudica l'accesso che se ne fa poi, che può avvenire con indici, con nomi, navigandolo parzialmente un pezzo alla volta (SAX) oppure come albero (DOM).

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    O meglio li conosco ma non mi metto a specificarli tutti.
    Ma di che stiamo parlando? Non è necessario specificare nulla. Non si capisce a cosa fai riferimento.

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Può darsi che l'agoritmo che ho proposto non sia ottimale ma quantomeno è in grado di parsare il file nel modo che ho richiesto.
    Non hai proposto nulla. Non serve un algoritmo. Un file XML - in modalità DOM, ad esempio - si può acquisire integralmente e lo si può navigare usando le classi di Java spostandosi al nodo N-esimo, quindi per posizione, oppure usando i nomi dei nodi, oppure usando XPath e specificando gerarchie e criteri.

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Non ha senso per me leggere semplicemente il file XML, è richiesto un ordine.
    Ma il file XML è già ordinato: ogni elemento ne contiene N e tu puoi risalire al primo, al secondo, al terzo, ecc.
    Puoi sfogliarli per ordine, prescidendo dal loro nome, oppure andare per nome, oppure per profondità...
    Puoi navigarli in qualunque modo possibile usando le classi che sono già presenti in Java e che fanno già tutto quello che serve e/o che è possibile fare per qualunque esigenza da risolvere. Qualunque.

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Risulta più complesso specificare tutte le classi, che non mi occorrono perché uso una classe che le ingloba tutte.
    Questa frase non ha assolutamente senso.

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    SAX è ottimo per carità ma per altro.
    SAX è una modalità di lettura di file, non è né ottimo né pessimo.

    Comunque mi astengo da ulteriori risposte: tanto è palese che non le leggi, e se le leggi non fai altro che contestarle in base a quanto e come pensi funzionino le cose che vengono spiegate, al punto che sei tu che chiedi e nel contempo le spieghi a me, che già le conosco e le utilizzo, dicendo cose che non si riescono a contestualizzare né a calare in un contesto specifico. Non si capisce letteralmente di che parli.

    Mi sembra una inutile perdita di tempo a questo punto, mi spiace.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Quote Originariamente inviata da alka Visualizza il messaggio
    Io direi invece di no, ma ormai ho compreso che è perfettamente inutile, perché non si riesce a proseguire con una conversazione che abbia un senso e che parli di cose tangibili, ossia che si capisca qual è l'obiettivo e il problema specifico.

    DOM e SAX sono solo differenti modalità di leggere il file XML: con il primo, si legge tutto il documento in una volta, e lo si naviga usando nomi e/o degli indici di posizione. Con SAX si può fare lo stesso, ma il file viene letto gradualmente e non nella sua interezza (se hai un file di 2GB, è ovvio quale dei due sia più indicato, ad esempio).

    Ma quello che si fa con uno lo si fa anche con l'altro: la modalità di lettura non pregiudica l'accesso che se ne fa poi, che può avvenire con indici, con nomi, navigandolo parzialmente un pezzo alla volta (SAX) oppure come albero (DOM).


    Ma di che stiamo parlando? Non è necessario specificare nulla. Non si capisce a cosa fai riferimento.


    Non hai proposto nulla. Non serve un algoritmo. Un file XML - in modalità DOM, ad esempio - si può acquisire integralmente e lo si può navigare usando le classi di Java spostandosi al nodo N-esimo, quindi per posizione, oppure usando i nomi dei nodi, oppure usando XPath e specificando gerarchie e criteri.


    Ma il file XML è già ordinato: ogni elemento ne contiene N e tu puoi risalire al primo, al secondo, al terzo, ecc.
    Puoi sfogliarli per ordine, prescidendo dal loro nome, oppure andare per nome, oppure per profondità...
    Puoi navigarli in qualunque modo possibile usando le classi che sono già presenti in Java e che fanno già tutto quello che serve e/o che è possibile fare per qualunque esigenza da risolvere. Qualunque.


    Questa frase non ha assolutamente senso.


    SAX è una modalità di lettura di file, non è né ottimo né pessimo.

    Comunque mi astengo da ulteriori risposte: tanto è palese che non le leggi, e se le leggi non fai altro che contestarle in base a quanto e come pensi funzionino le cose che vengono spiegate, al punto che sei tu che chiedi e nel contempo le spieghi a me, che già le conosco e le utilizzo, dicendo cose che non si riescono a contestualizzare né a calare in un contesto specifico. Non si capisce letteralmente di che parli.

    Mi sembra una inutile perdita di tempo a questo punto, mi spiace.
    Hai ragione, non serve che chiedo qui e si sta perdendo molto tempo.
    jabjoint

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 © 2026 vBulletin Solutions, Inc. All rights reserved.