2009-02-06 16 views
8

Di tutte le librerie per l'input e l'output di xml con java, in quali circostanze lo strumento di scelta è il digest-commons?Quando e perché dovresti usare Apache commons-digester?

+0

Una risposta un po 'tarda: apache digester non è un parser completo e talvolta può essere molto lento. C'è una nuova opzione chiamata estesa vtd-xml che può processare documenti xml fino a 256 GB, supporta la mappa completa di Xpath e mem –

risposta

8

Dal digester wiki

Perché utilizzare digestore?

Digester è uno strato sopra l'API del parser SAX xml per semplificare l'input xml del processo . In particolare, il digestore semplifica la creazione e inizializza un albero di oggetti basato su un file di input xml.

L'uso più comune per digestore è di configurazione in formato XML file di processo, la costruzione di un albero di oggetti sulla base di tali informazioni.

noti che digestore può creare e inizializzare veri e propri oggetti, vale a dire le cose che riguardano gli obiettivi di business della l'applicazione e hanno reali comportamenti. Molti altri strumenti hanno un obiettivo diverso : per creare un modello di i dati nel documento XML di input, come un DOM W3C, ma un po 'più amichevole.

e

E a differenza di strumenti che generano classi, è possibile scrivere le classi della vostra applicazione prima, poi successivamente si decide di utilizzare digestore per costruire loro da un file di input XML. Il risultato è che le classi sono vere classi con comportamenti reali, che si inizializza da un file xml anziché semplici "structs" che contengono solo dati.

Come esempio di ciò che non è utilizzato per:

Se, invece, siete alla ricerca di una rappresentazione diretta del documento di input XML, come dati piuttosto che veri e propri oggetti, allora digestore è non per te; DOM, jDOM o altri ancora strumenti di binding diretto saranno più appropriati.

Quindi, digester mapperà XML direttamente in oggetti java. In alcuni casi è più utile che dover leggere l'albero ed estrarre le opzioni.

1

Se si desidera creare e inizializzare oggetti "veri" da XML, utilizzare un contenitore di fagioli decente, come quello fornito da Spring.

Inoltre, la lettura nell'XML e l'elaborazione autonoma tramite XPath o l'utilizzo di strumenti di collegamento Java/XML come Castor, sono alternative valide e forse più standard.

Ho lavorato con Digester quando utilizzo Struts, ma sembra che sia stato superato da altri strumenti e framework per i possibili usi che ha.

4

La mia prima ripresa sarebbe "mai" ... ma forse ha il suo posto. Sono d'accordo con eljenso che è stato superato dalla concorrenza.

Quindi per una buona associazione degli oggetti efficiente e semplice/mapping, JAXB è molto meglio, oppure XStream. Molto più conveniente e persino più veloce.

Problemi correlati