Clojure'a yeni geldim ve ilk projemde dev (250 + GB) XML dosyası ile uğraşmak zorundayım. Daha sonra işlemek için PostgreSQL'e koymak istiyorum, ancak böyle büyük bir dosyaya nasıl yaklaşacağımı bilmiyorum. Büyük xml işlemeClojure'da Büyük XML
cevap
Yeni bir dizüstü bilgisayarda 31 GB'lık bir Wikipedia dökümü için yeni clojure.data.xml
'u kullandım. Eski lazy-xml
katkısı kütüphanesi benim için çalışmadı (bellek bitti).
https://github.com/clojure/data.xml
Basitleştirilmiş örnek kod:
(require '[clojure.data.xml :as data.xml]) ;'
(defn process-page [page]
;; ...
)
(defn page-seq [rdr]
(->> (:content (data.xml/parse rdr))
(filter #(= :page (:tag %)))
(map process-page)))
, @ivant'ın ne anlama geldiğini? tembel-xml için clojure io uygulama bir şekilde kırık mı? –
Evet, bu sorun var.Ayrıca, eski clojure katkısı bir parçasıdır ve kullanımdan kaldırılmıştır.'. data.xml' değiştirmektir. –
Tamam - Ben birkaç saat çalışarak geçirdim ((()) 'ın olası kombinasyonları, ancak hiçbir başarı olmadan StackOverflow Hatası alıyorum ve anladığım gibi - bunu kullanıyorum: '(açık-açık [rdr (BufferedReader.) (FileReader. dosya-adı)))]] ve bazı giriş akışı kullanmalıyım, fakat ben Clojure için yeni ve bu birkaç saatten sonra ... Yardımcı olabilir misiniz? – trzewiczek
genellikle Clojure durumunda, SAX ile yapılır bu http://richhickey.github.com/clojure-contrib/lazy-xml-api.html
bkz olan (ayrıştırmak-seq Dosya/inputStream/URI)
API tembel olabilir, ama IO değil, bu yüzden o boyuttaki bir dosya üzerinde çalışacağından kuşkuluyum. – ivant
@ivant'i, verileri aşamalı olarak okuyan bir giriş akışına bağlarsınız. Java'da büyük xml dosyalarını işlemek için standart bir uygulamadır. –
, ivant'in buraya atıfta bulunabileceği hakkında bir açıklama için Justin'in cevabına bakın. –
xml kayıtların bir koleksiyonu ise, https://github.com/marktriggs/xml-picker-seq, xml boyutundan bağımsız olarak xml'de kayıtları işlemek için gerekenler. Başlık altında XOM kullanır ve bir seferde bir 'kayıt' işler.
Bunu da denedim, ancak hiç başarı gösteremedim. Yani - büyük dosya hakkında hile yaptım, ama xpath-query ile reasults alınamıyor - boş sonuçlar ortaya çıkıyor. Çalıştığımız tek xpath sorgusu ".", Ama istediğim şey değil ... Bu problemi iki saatten fazla idare edemedim ... :( – trzewiczek
Ayrıca masif dosyalar için espresso XML ayrıştırıcı kullanabilirsiniz (www.expressoxml.com). Dosya boyutuyla sınırlı olmadığı için 36 GB ve üzeri dosyaları ayrıştırabilir. Bir aramadan 230.000 öğeye kadar geri dönebilir ve web sitelerinden "bulut" üzerinden akış yoluyla kullanılabilir. Ve tüm geliştirici sürümlerinin en iyisi ücretsizdir.
Bu ilanı tarafsız bir tavsiye olarak göstermeye çalışmamış olsanız bile, güçlü bir şekilde bu ürünle olan güçlü ilişkinizi belirtmek en iyisidir. https://twitter.com/Lughnasagh/status/260387856772653056. –
- 1. Silverlight'tan WCF'ye büyük XML gönderme
- 2. Bir RSS yayını XML dosyası için ne kadar büyük büyük?
- 3. Büyük/büyük XML dosyalarını yayınlamak için XmlReader'ı PowerShell'de nasıl kullanabilirim?
- 4. Büyük XML dosyalarını ayrıştırmak için Nokogiri :: XML :: Reader'ı nasıl kullanırım?
- 5. Büyük bir xml dosyasında rastgele sorgular
- 6. DataSet üzerinde büyük XML yükleniyor (OutOfMemory Exception)
- 7. Büyük XML dosyaları için python lxml.etree kullanma
- 8. Python'da büyük sözde xml dosyalarını ayrıştırma
- 9. Büyük bir XML dosyasının üzerinde döngü
- 10. C XML dosyasından XML deyiminden büyük XML dizesi okuyun C# .NET içinde
- 11. WCF REST hizmete büyük xml yükleyerek -> 400 Geçersiz istek ben REST hizmetine büyük xml dosya yüklemek çalışıyorum
- 12. Büyük XML dosyalarında komut satırı XPath sorguları nasıl yapılır?
- 13. Go'da çeşitli öğelerle büyük XML dosyası nasıl ayrıştırılır?
- 14. Büyük bir XML dosyası ayrıştırılamıyor nasıl bellek tükendi değil
- 15. Java SAX ile XML ayrıştırmak, büyük/küçük harf duyarlı.
- 16. Büyük XML dosyaları yükleme ve MemoryError ile işlem yapma
- 17. Son derece büyük XML dosyalarını php olarak ayrıştırma
- 18. büyük küçük harf duyarlı eşleme? Aşağıdaki xml için Örneğin
- 19. C# içinde çok büyük XML Dosyaları nasıl ayrıştırılır?
- 20. Java'ya gömülü neo4j'ye Büyük bir xml dosyasını içe aktarma
- 21. büyük genişlik küçük resmi
- 22. XML XML dosyasında XML ile XML nasıl kaydedilir?
- 23. XML nesnelerine XML dönüştürülmesi
- 24. XML Serialization - XML Kök
- 25. XSLT'ye XML ile XML -
- 26. iyi rehber Şu anda Vikikitap'a arasında XML öğreniyorum XML
- 27. Android: xml
- 28. Alt işleyicideki XML XML iç geçirme
- 29. xml ayrıştırıcı öğeleri al xml
- 30. XML ile Ayrıştırma XML CDATA
Küçük bir dosyaya nasıl yaklaşacağınızı anlayarak başlayın, sonra çalışın. –
Bu XML neye benziyor? Çok muboresan veya sayısız öğenin düz bir koleksiyonu? – cgrand
Arborescent - harika kelime! +1 –