Confronto di XmlReader con il lettore SAX

Come il lettore SAX, XmlReader è un cursore di tipo forward-only e di sola lettura, che fornisce all'input un accesso rapido al flusso non memorizzato nella cache. È in grado leggere un flusso o un documento. Consente all'utente di estrarre dati e ignorare i record non interessanti per l'applicazione. La grande differenza sta nel fatto che il modello SAX è un modello "push", in cui il parser spinge gli eventi nell'applicazione, notificando quest'ultima ogni volta che è stato letto un nuovo nodo, mentre le applicazioni che utilizzano XmlReader possono estrarre i nodi dal reader quando necessario. I vantaggi del modello pull sono quelli 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 tra loro 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 dele stringhe Solitamente, i dati vengono letti dal buffer del parser nell'oggetto stringa, che viene quindi spinto 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 voce, compresi attributi, istruzioni di elaborazione e caratteri spazio, mentre il client del modello pull può ignorare alcune voci ed elaborare solo quelle che sono di interesse per l'applicazione. Questo consente la creazione di applicazioni estremamente efficenti. È inoltre possibile impostare in anticipo le proprietà che incidono sul modo in cui il flusso XML viene elaborato (come ad esempio, Normalization). Per ulteriori informazioni sull'omissione del contenuto, vedere Omissione del contenuto con XmlReader.

Vedere anche

Lettura dell'XML con XmlReader | Posizione corrente dei nodi in XmlReader | Impostazioni delle proprietà su XmlReader | Confronto di oggetti utilizzando XmlNameTable con XmlReader | Lettura degli attributi con XmlReader | Lettura del contenuto di elementi e attributi | Omissione del contenuto con XmlReader | Lettura ed espansione con EntityReference | Lettura dei dati XML con XmlTextReader | Lettura delle strutture dei nodi con XmlNodeReader | Convalida dell'XML con XmlValidatingReader | Creazione di un reader XML personalizzato | Classe XmlReader | Membri XmlReader | Classe XmlNodeReader | Membri XmlNodeReader | Classe XmlTextReader | Membri XmlTextReader | Classe XmlValidatingReader | Membri XmlValidatingReader