Ho bisogno di elaborare documenti XML che consistono in un numero molto grande di record indipendenti, ad es.Come ottenere un Iterator in streaming [Nodo] da un grande documento XML?
<employees>
<employee>
<firstName>Kermit</firstName>
<lastName>Frog</lastName>
<role>Singer</role>
</employee>
<employee>
<firstName>Oscar</firstName>
<lastName>Grouch</lastName>
<role>Garbageman</role>
</employee>
...
</employees>
In alcuni casi questi sono solo file di grandi dimensioni, ma in altri possono provenire da una fonte di streaming.
Non posso solo scala.xml.XmlLoader.load() perché non voglio tenere tutto il documento in memoria (o aspettare che il flusso di input si chiuda), quando devo solo lavorare con un record alla volta. So che posso usare XmlEventReader per lo streaming dell'input come una sequenza di XmlEvents. Questi sono comunque molto meno comodi da utilizzare rispetto a scala.xml.Node.
Quindi mi piacerebbe ottenere un Iterator [Nodo] pigro da questo in qualche modo, al fine di operare su ogni singolo record utilizzando la sintassi Scala, mantenendo l'utilizzo della memoria sotto controllo.
Per fare da solo, potrei iniziare con un XmlEventReader, creare un buffer di eventi tra ogni tag iniziale e finale corrispondente e quindi costruire un albero del nodo da quello. Ma c'è un modo più semplice che ho trascurato? Grazie per eventuali approfondimenti!
Brillante! Funziona alla grande Per ottenere da questo generatore di stile a un Iterator non è troppo difficile; vedi la mia altra risposta. Grazie mille! –