Ho una raccolta di file XML e alcuni di essi sono piuttosto grandi (fino a ~ 50 milioni di nodi di elementi). Sto usando xmllint
per la convalida di quei file, che funziona abbastanza bene anche per quelli enormi grazie all'API di streaming.Come eseguire query XPath da riga di comando in enormi file XML?
xmllint --loaddtd --stream --valid /path/to/huge.xml
ho recentemente appreso che xmllint
è anche in grado di fare query XPath linea di comando, che è molto utile.
xmllint --loaddtd --xpath '/root/a/b/c/text()' /path/to/small.xml
Tuttavia, queste query XPath non funzionano per gli enormi file XML. Ho appena ricevuto un messaggio "Ucciso" dopo un po 'di tempo. Ho provato ad abilitare l'API di streaming, ma questo non porta a nessun output.
xmllint --loaddtd --stream --xpath '/root/a/b/c/text()' /path/to/huge.xml
Esiste un modo per abilitare la modalità di streaming quando si fa query XPath utilizzando xmllint
? Esistono altri modi migliori per eseguire query XPath a riga di comando per enormi file XML?
prova '--shell' opzione per l'interattivo (con solo il percorso del file XML) – flafoux
ho provato ad aprire la shell interattiva per un file enorme, ma andrà in crash ("Ucciso", proprio come in il caso di non usare '--stream') prima di poter inserire qualsiasi comando. – MRA
http://superuser.com/questions/543881/efficiently-extracting-a-few-data-from-a-large-xml-file –