Ich habe eine Sammlung von XML-Dateien, und einige von ihnen sind ziemlich groß (bis zu ~ 50 Millionen Element-Knoten). Ich benutze xmllint
für die Validierung dieser Dateien, die dank der Streaming-API auch für die Großen funktioniert.Wie führe ich XPath-Abfragen in großen XML-Dateien?
xmllint --loaddtd --stream --valid /path/to/huge.xml
ich vor kurzem erfahren, dass xmllint
Kommandozeile XPath-Abfragen zu tun, auch in der Lage ist, was sehr praktisch ist.
xmllint --loaddtd --xpath '/root/a/b/c/text()' /path/to/small.xml
Diese XPath-Abfragen funktionieren jedoch nicht für die großen XML-Dateien. Ich erhalte nach einiger Zeit eine Nachricht "Killed". Ich habe versucht, die Streaming-API zu aktivieren, aber das führt nur zu keiner Ausgabe.
xmllint --loaddtd --stream --xpath '/root/a/b/c/text()' /path/to/huge.xml
Gibt es eine Möglichkeit Streaming-Modus zu aktivieren, wenn XPath-Abfragen xmllint
mit zu tun? Gibt es andere/bessere Möglichkeiten, Befehlszeilen-XPath-Abfragen für große XML-Dateien auszuführen?
Versuch '--shell' Option für interaktive (nur mit dem XML-Dateipfad) – flafoux
Ich habe versucht, die interaktive Shell für eine große Datei zu öffnen, aber es wird abstürzen („getötet“, so wie in der Fall, dass ich '--stream' nicht benutze, bevor ich irgendeinen Befehl eingeben kann. – MRA
http://superuser.com/questions/543881/efficiently-extracting-a-few-data-from-a-large-xml-file –