2009-04-15 8 views
15

Mi sono occupato di alcune API XML in Java, ma non ho una buona conoscenza di tutti i framework disponibili in Java per gestire XML per qualsiasi scopo (ad esempio JAXB, JAXP, Xerces, StAX , Castor, ecc.). Qualcuno può evidenziare le API Java XML più diffuse e fornire una rapida descrizione di ciò per cui sono destinate? Sarei interessato anche a quali API vengono utilizzate al giorno d'oggi e che potrebbero essere considerate deprecate.API XML Java

+0

Hai guardato vtd-xml? –

+0

Molte delle tue domande hanno una risposta, credo, nelle precedenti domande StackOverflow: - [Java API for XML] (http://stackoverflow.com/questions/678894/) - [Serializzazione XML in Java?] (Http://stackoverflow.com/questions/35785/) - [Miglior parser XML per Java] (http://stackoverflow.com/questions/373833/) - [Modo semplice per eseguire Xml in Java] (http: // StackOverflow .com/questions/528664 /) Questo tipo di ricerca è più facile da fare da Google Eddie

risposta

16
  • JAXP è un "API pluggable", un insieme di interfacce e classi astratte con un "implementazione di riferimento" di Sun, ma utilizza l'approccio fabbrica per consentire di scambiare per una diversa implementazione (ad esempio un potrebbe essere più veloce in determinati tipi di utilizzo) senza dover modificare alcun codice, solo da changing a system property. Include DOM, SAX, StAX e XSLT. Sun ha un buon comparison page per DOM/SAX/StAX. Io raccomanderei lo O'Reilly book on Java XML, lo puoi trovare usato ad un prezzo decente, ma assicurati di avere l'ultima (terza) edizione.

  • JAXB è un modo per associare le classi Java ai file XML, utilizzando uno schema XML. (È possibile generare automaticamente le classi java utilizzando uno schema oppure è possibile generare automaticamente lo schema utilizzando le classi java. Ho utilizzato il primo ma non il secondo.) Può essere utile se i file XML hanno uno schema ben noto e desidera trattare i dati in un file XML come se fossero oggetti in una classe Java. Effettuate pochissime chiamate API, solo uno o due per eseguire il marshalling dei dati da Java a XML o unmarshal dei dati da XML a Java. Se i tuoi file XML sono più freeform e/o vuoi usare XPATH per trovare le cose, probabilmente stai meglio usando una delle API JAXP.

  • Castor è un'alternativa a JAXB; Non l'ho usato ma c'è un comparison page on IBM's website.

  • Xerces è la famiglia di pacchetti di gestione XML di Apache. Ne include uno per Java, la maggior parte dei quali può essere utilizzato tramite JAXP come un'implementazione alternativa per l'implementazione di riferimento di Sun. Include anche librerie per C++ e Perl.

+7

L'API XML di Java riassume tutto ciò che odio per l'architettura maldestra. Non voglio una "architettura collegabile": voglio solo una libreria di analisi standard, veloce e corretta, fuori dalla scatola ... Immagina se String fosse una "architettura collegabile"! –

+1

@NeilCoffey Penso che la gestione dell'XML sia un compito un po 'più complesso rispetto a un elenco ordinato di caratteri. – vbence

+1

È più complesso ... ma lo scopo di un'API è di non esporre tale complessità (o almeno di esporre solo il necessario livello di complessità) al programmatore dell'applicazione. –