XML dosyalarından oluşan bir koleksiyonum var ve bunların bazıları oldukça büyük (~ 50 milyon eleman düğümüne kadar). Aktarım API'sı sayesinde büyük dosyalar için bile oldukça güzel olan bu dosyaları doğrulamak için xmllint
kullanıyorum.Büyük XML dosyalarında komut satırı XPath sorguları nasıl yapılır?
xmllint --loaddtd --stream --valid /path/to/huge.xml
Geçenlerde xmllint
da çok kullanışlı bir komut satırı XPath sorguları, yapma yeteneğine sahip olduğunu öğrendik.
xmllint --loaddtd --xpath '/root/a/b/c/text()' /path/to/small.xml
Ancak, bu XPath sorguları büyük XML dosyaları için çalışmaz. Bir süre sonra sadece "Killed" mesajı alıyorum. Akış API'sini etkinleştirmeyi denedim, ancak bu sadece hiç çıktı almıyor.
xmllint --loaddtd --stream --xpath '/root/a/b/c/text()' /path/to/huge.xml
xmllint
kullanarak XPath sorguları yaparken akış modunu etkinleştirmek için bir yol var mı? Büyük XML dosyaları için komut satırı XPath sorguları yapmak için başka/daha iyi yollar var mı? XPath ifadeleri çok basit ise
deneyin '(sadece xml dosya yolu ile) interaktif için --shell' seçeneği Ben büyük dosya için etkileşimli kabuk açılış çalıştı – flafoux
, ama sadece olduğu gibi ("Öldürülen" kilitlenmesine: Bu deneyin Herhangi bir komutu girmeden önce '--stream' kullanmama durumu. – MRA
http://superuser.com/questions/543881/efficiently-extracting-a-few-data-from-a-large-xml-file –