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 ?, ...)


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.