Velocità e parsing XML in .NET - serializzazione vs DOM XML vs?
-
06-09-2019 - |
Domanda
Ho fatto il parsing XML prima, ma mai in modo massiccio. Se sto lavorando con molti documenti simili a questo formato:
<?xml version="1.0" ?>
<items comment="something...">
<uid>6523453</uid>
<uid>94593453</uid>
</items>
Qual è il modo più veloce per analizzare questi documenti?
1) DOM XML
2) Serialize XML - Reidratare ad un oggetto .NET
3) Qualche altro metodo
Aggiorna
Ho dimenticato di dire che non ci sarebbero circa 8000 elementi uid in media.
Soluzione
XmlReader
è sicuramente di essere il metodo più rapido, anche se dovrete fare tutto il parsing manualmente naturalmente. Si legge direttamente dal flusso, senza cache nulla, anche se non è troppo comodo da usare rispetto al DOM.
Confrontando i due hai suggerito: la serializzazione deve essere più veloce che utilizzare il DOM dal momento che (credo) che non memorizza nella cache l'intero albero all'interno della memoria - è anche ha certamente un più facile da usare l'interfaccia, se si sta puntando specificamente per eseguire la serializzazione.
Altri suggerimenti
Direi che serializzazione XML sarebbe il meglio dei due mondi. È possibile ottenere la facilità d'uso, così come una buona velocità. V'è una certa ulteriore sovraccarico con serializzazione XML ... se si è utilizzato XmlReader manualmente, avrete almeno replicare, se non superare, il carico di sul proprio come si usa quel lettore di ricreare il vostro oggetto grafico.
A seconda di ciò che è necessario fare con i dati XmlReader citato da @Noldorin è la soluzione migliore per l'elaborazione stile streaming. Se avete bisogno di più ad-hoc accesso stile ai dati utilizzando XPath e il XPathDocument sarà molto più veloce rispetto al documento XML grezzo.