
Originariamente inviata da
alka
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.