Best Practice - XML To Excel

3

Devo leggere un grande file XML con molte informazioni. Successivamente estraggo le informazioni necessarie (~ 20 punti (colonne) / ~ 80 dati rilevanti (righe, alcune delle quali con sottodati) e scriverle in un file Excel.

La mia domanda è come gestire la parte di estrazione (di dati inutilizzati),

  • dovrei copiare l'intero file ed eliminare le parti non utilizzate, quindi scriverlo su excel
  • o è un buon approccio per creare oggetti per ogni colonna?
  • dovrei scrivere l'intero xml per eccellere e iniziare a cancellare le righe in excel?

Quale sarebbe performante e una soluzione accettabile?

    
posta MemLeak 21.09.2012 - 10:02
fonte

1 risposta

4

Direi di fare il filtraggio come parte dell'elaborazione. La programmazione in Excel è significativamente più dolorosa e limitata rispetto a qualsiasi altra tecnologia lato server che potresti utilizzare.

CSV come formato di output è molto più facile da utilizzare rispetto a Excel e praticamente ogni linguaggio di programmazione può facilmente generare CSV senza richiedere alcuna libreria (anche la scrittura del proprio CSV dovrebbe essere possibile in circa un'ora); Se ti interessano solo i dati semplici, non ci sono formule, cartelle di lavoro a più fogli o layout, CSV dovrebbe andare bene.

Ora, a seconda delle dimensioni dell'ingresso XML, vorrei:

a) Leggere l'intero file XML in memoria, analizzarlo in un albero DOM e utilizzare XPath per estrarre le informazioni desiderate. Se la trasformazione non è banale, considera l'utilizzo di XSLT (avrai bisogno di un minimo di post-elaborazione, perché generare CSV validi con XSLT è inutilmente complicato). Poiché l'albero DOM deve essere inserito nella RAM nella sua interezza, è possibile solo per i file XML più piccoli (ad esempio fino all'intervallo di decine di megabyte).

Per documenti più grandi:

b) Usa un parser SAX per camminare sul documento, emettendo i nodi rilevanti mentre procedi. Questo è un po 'più difficile da scrivere, perché farai intrecciare input e output, ma ha il vantaggio che i requisiti di memoria sono lineari con la profondità dell'albero piuttosto che la sua dimensione totale (cioè, il parser SAX mantiene solo il percorso dalla radice del documento fino al nodo corrente in memoria, non all'intero DOM).

    
risposta data 21.09.2012 - 10:35
fonte

Leggi altre domande sui tag