Próbuję przeanalizować * duży plik (> 5 GB) struktury danych znaczników. Format danych jest w zasadzie XML, ale nie ma wyraźnego elementu root. Jaki jest najskuteczniejszy sposób na zrobienie tego?Parsowanie dużych plików pseudo-xml w pythonie
Problem z parserami SAX polega na tym, że wymagają one elementu głównego, więc albo muszę dodać pseudo element do strumienia danych (czy jest odpowiednik Java SequenceInputStream w Pythonie?) Lub muszę przejść do parser oparty na zdarzeniach zgodnych z SAX (czy istnieje następca sgmllib?)
Struktura danych jest dość prosta. Zasadniczo wykaz elementów:
<Document>
<docid>1</docid>
<text>foo</text>
</Document>
<Document>
<docid>2</docid>
<text>bar</text>
</Document>
* faktycznie iteracyjne
jest 'return ''' naprawdę dobrą rzeczą do zrobienia w 'StopIteration'? W jaki sposób klient tego kodu zauważyłby EOF, gdyby używał tylko 'read()'? –
Jedną z właściwości obiektów strumieniowych w pythonie jest to, że wywołanie read() blokuje i zwraca co najmniej jeden bajt, lub w przypadku EOF zwraca pusty łańcuch. Tak działa oryginalna metoda file.read. – liori
Być może zechcesz użyć tego w połączeniu z PullDOM - łączy on charakter streamingowy SAX z hierarchiczną naturą DOM. – RichieHindle