Wydajne wyodrębnianie kilku danych z dużego pliku XML

2

Muszę wyodrębnić kilka zawartości pola z dużego pliku XML. Obecnie robię to przez połączenie xmlstarlet i skryptu Python (używając ElementTree). Chodziło o to, aby przyciąć plik XML z bezużytecznych danych za pomocą xmlstarlet, a następnie przetworzyć mniejszy plik za pomocą Pythona (użycie Pythona bezpośrednio na pliku nie było wykonalne - pamięć i procesor były zapchane, a niektóre pliki nigdy nie zostały przetworzone). Zasadniczo działa, ale:

  • to nie jest wydajne
  • nie jest szczególnie elastyczny
  • jest to dość brzydkie (najmniej z moich obaw, ale jednak z punktu widzenia utrzymania)

Szukam porady, jak najlepiej poradzić sobie z takim przypadkiem (ilość wyodrębnionych danych wynosi około 5% początkowego pliku). Jestem otwarty na wszystko rozsądne (konkretny język, może zrzucenie pliku XML do DB, a następnie wyodrębnienie tego, czego potrzebuję przed zrzuceniem DB ?, ...)

WoJ
źródło
stackoverflow.com/questions/30305724/… || stackoverflow.com/questions/7528249/…
Ciro Santilli 7 改造 中心 法轮功 六四 事件

Odpowiedzi:

2

Czy korzystasz z ElementTree iterparse? Powinien być w stanie efektywnie obsługiwać duże dane wejściowe bez parsowania całego drzewa w pamięci (co zwykle ma miejsce, gdy koła wypadają z parsera XML).

Możesz znaleźć wiele przypadków użycia i przykładów na stackoverflow.

pan. spuratic
źródło
Nie, nie jestem. Dzięki za podpowiedź - Przeczytam i
wdrożę
Rozwiązanie z iterparse działa świetnie. Poprawiło to czas analizy o co najmniej rząd wielkości. Natknąłem się jednak na problem, ale otworzę osobne pytanie
WoJ