Condividi tramite


Confronto di XmlReader con il lettore SAX

Come il lettore SAX (Simple API for XML), XmlReader è un cursore forward-only, di sola lettura, che fornisce all'input un accesso rapido al flusso non memorizzato nella cache. È in grado di leggere un flusso o un documento. Consente all'utente di effettuare il pull dei dati e ignorare i record non rilevanti per l'applicazione. La differenza sostanziale è rappresentata dal fatto che il modello SAX è un modello "push", in cui il parser effettua il push degli eventi nell'applicazione, notificando ogni volta che viene letto un nuovo nodo, mentre le applicazioni che utilizzano XmlReader possono effettuare il pull dei nodi dal lettore quando necessario. I vantaggi del modello pull sono i seguenti:

Vantaggio

Descrizione

Gestione dello stato

Il modello push richiede che i gestori del contenuto costruiscano computer di stato molto complessi. Il client del modello pull semplifica la gestione dello stato tramite un perfezionamento naturale della procedura dall'alto in basso.

Più flussi di input

Il modello pull consente al client di unire più flussi di input. Si tratta di un'operazione estremamente complessa nel modello push.

Disposizione su livelli

Il modello push può essere creato sopra il modello pull. Non è tuttavia possibile il contrario.

Prevenzione di copie supplementari delle stringhe

In genere, i dati vengono letti dal buffer del parser nell'oggetto stringa, che viene quindi inserito nel buffer del client. Il modello pull consente al client di fornire al parser un buffer nel quale la stringa viene scritta direttamente.

Elaborazione selettiva

Il modello push notifica al client ogni elemento, compresi attributi, istruzioni di elaborazione e spazi vuoti, mentre il client del modello pull può ignorare alcuni elementi ed elaborare solo quelli rilevanti per l'applicazione. Questo consente la creazione di applicazioni estremamente efficienti. Inoltre, è possibile impostare in anticipo le proprietà che incidono sull'elaborazione del flusso XML (ad esempio, la normalizzazione).

Vedere anche

Concetti

Lettura di XML con XmlReader

Altre risorse

Utilizzo della classe XmlReader