Mam kolekcję plików XML, a niektóre z nich są dość duże (do ~ 50 milionów węzłów elementów). Używam xmllint
do sprawdzania poprawności tych plików, co działa całkiem dobrze nawet dla ogromnych dzięki strumieniowemu API.Jak wykonać kwerendę XPath w wierszu polecenia w dużych plikach XML?
xmllint --loaddtd --stream --valid /path/to/huge.xml
Niedawno dowiedziałem się, że xmllint
jest również zdolny do zapytań XPath wiersza poleceń, co jest bardzo wygodne.
xmllint --loaddtd --xpath '/root/a/b/c/text()' /path/to/small.xml
Jednak te zapytania XPath nie działają dla dużych plików XML. Po pewnym czasie otrzymuję komunikat "Killed". Próbowałem włączyć streaming API, ale to po prostu nie generuje żadnego wyjścia.
xmllint --loaddtd --stream --xpath '/root/a/b/c/text()' /path/to/huge.xml
Czy istnieje sposób włączenia trybu strumieniowego podczas wykonywania zapytań XPath przy użyciu xmllint
? Czy istnieją inne/lepsze sposoby wykonywania zapytań XPath z linii poleceń w przypadku dużych plików XML?
spróbować '--shell' opcję interaktywnej (z tylko ścieżki do pliku XML) – flafoux
próbowałem otwarciu interaktywną powłokę do ogromnego pliku, ale będzie to awarię („Zabity”, podobnie jak w przypadek nie używania '--stream') zanim będę mógł wprowadzić dowolne polecenie. – MRA
http://superuser.com/questions/543881/efficiently-extracting-a-few-data-from-a-large-xml- file –