(Anche se non l'hai detto in modo esplicito, la tua domanda sembra riferirsi esclusivamente al mondo Java, e questa risposta che riflette.)
JAXP è un insieme di interfacce che coprono parsing XML, trasformazione XSLT, e Convalida dello schema XML. Se ci concentriamo solo sul lato di analisi XML, il suo principale contributo è fornire un meccanismo per localizzare un'implementazione del parser XML, in modo che il codice sorgente non sia bloccato in un particolare prodotto. Francamente questo è di valore limitato in questi giorni; gli unici due parser SAX/DOM di uso comune sono quelli incorporati nel JDK e Apache Xerces. Apache Xerces è migliore sotto ogni aspetto, tranne per il fatto che è necessario scaricarlo separatamente.
Come per le altre interfacce di analisi, si suddividono in due categorie: API basate su eventi e API basate su albero. Le API basate su albero sono molto più facili da utilizzare, ma possono utilizzare molta memoria quando si gestiscono documenti di grandi dimensioni.
Le due API basate su eventi dominanti sono SAX (push) e StAX (pull).L'analisi pull è qualcosa che molti programmatori trovano più facile perché è possibile utilizzare lo stack del programma per mantenere le informazioni sullo stato; sfortunatamente, sebbene l'API di StAX sia un po 'buggy, diverse implementazioni hanno risolto le sue lacune in modi diversi. L'implementazione più completa e affidabile di StAX è il parser di Woodstox; l'implementazione più completa e affidabile di SAX è Apache Xerces. Ma non tentare di utilizzare un approccio di analisi basato sugli eventi a meno che l'applicazione non abbia realmente bisogno di quel livello di prestazioni (ea meno che non si disponga del livello di esperienza necessario per evitare di perdere tutti i guadagni in termini di prestazioni a livello di applicazione).
Per API basate su albero, il DOM rimane dominante solo perché è stato definito da W3C ed è implementato nel JDK, ed è quindi percepito come "standard"; è anche quello menzionato in tutti i libri sull'argomento. Tuttavia, tra tutti i modelli ad albero, è indiscutibilmente il peggiore progettato (principalmente perché precede l'introduzione di spazi dei nomi). Le alternative includono JDOM2, DOM4J, XOM e AXIOM. Tendo a raccomandare JDOM2 o XOM.
fonte
2016-01-05 12:00:24
Quando sto lavorando con (manipolando/creando) xml sto sempre usando DOM, ma questa è solo la mia opinione personale! Penso che funzioni abbastanza bene e fornisca tutte le funzionalità di cui hai bisogno. – ParkerHalo
Questo potrebbe essere di aiuto https://jaxp.java.net/1.4/JAXP-FAQ.html –
ParkerHalo: DOM sembra essere un modo molto intuitivo per lavorare con XML. La ragione principale per non usare DOM è spesso definita come la dimensione di un documento, ma la gente dice solo "se il documento è troppo grande, usa SAX invece di DOM", mentre non definisce mai cosa significhi "grande": linee di codice, documento dimensione in MB, numero di oggetti xml, ... e a quale numero questo si verifica. Sono 20.000 linee considerate grandi, o 1.000.000 e così via. – hamena314