Ho il codice Python per analizzare un file XML come detailed here. Comprendo che i file XML sono noti per il hogging delle risorse di sistema quando vengono manipolati in memoria. La mia soluzione funziona con file XML più piccoli (ad esempio 200 KB e un file 340 MB).Come dividere un file XML in modo semplice in Python?
Ho iniziato a ricercare l'implementazione di StAX (pull parser), ma sono in esecuzione con un programma serrato e sto cercando un approccio molto più semplice per questo compito.
Capisco la creazione di blocchi di file più piccoli, ma come faccio a estrarre gli elementi giusti emettendo i tag main/header ogni volta?
Per esempio, questo è lo schema:
<?xml version="1.0" ?>
<!--Sample XML Document-->
<bookstore>
<book Id="1">
....
....
</book>
<book Id="2">
....
....
</book>
<book Id="3">
....
....
</book>
....
....
....
<book Id="n">
....
....
</book>
</bookstore>
Come si crea nuovi file XML con i dati di intestazione per ogni 1000 Elementi del libro? Per un esempio concreto del codice e del set di dati, fare riferimento al mio altro question here. Molte grazie.
Tutto quello che voglio fare è evitare il caricamento in-memory del set di dati tutto in una volta. Possiamo analizzare il file XML in streaming? Sto pensando lungo le linee giuste?
p.s: La mia situazione è simile a un question asked nel 2009. Pubblicheremo una risposta qui una volta trovata una soluzione più semplice per il mio problema. Il tuo feedback è apprezzato.
Meglio ancora, eTree uso di lxml (http://lxml.de/tutorial.html) per un incremento delle prestazioni. – six8
@Cixate: non è chiaro (senza un benchmark) se 'cElementTree.iterparse()' è più lento di 'lxml.etree.iterparse()' quando è richiesta solo l'analisi http://www.ibm.com/developerworks/xml/library/x-hiperfparse / – jfs