Sunucuda büyük bir xml dosyasını ayrıştırıp istemciye göndermem gerekiyor.
İsteğe bağlı ayrıştırma işlemini yapmak istiyorum - yani, yalnızca ana düğümleri ayrıştırmak ve göstermek ve istemci bir üst düğüme tıkladığında - hangi üst öğenin seçildiğini söyleyen sunucuya bir istek göndermek için daha sonra çocukları ayrıştırmak ve göndermek için (yine, tüm alt ağacı değil, sadece ebeveynleri).
STAX ayrıştırıcısı kullanmayı düşündüm, ancak ebeveyn-çocuk ilişkisi söz konusu olduğunda onunla nasıl çalışacağımı anlamıyorum. Ayrıştırıcıya, çocuk olan bir sonraki START-ELEMENT'e devam etmemesini, ancak bir sonraki üst düzey seviyeye geçmesini nasıl söylerim? ve ayrıca - ITERATOR uygulamasına geri dönmenin bir yolu var mı? Bir ebeveyn seçip çocuklarını gördükten sonra, geri dönüp önceki bir ebeveyni görebilir miyim?
Herhangi bir öneriniz için gerçekten çok memnun olurum!
Teşekkür ederiz.Stax ayrıştırma - seçilen ana babaya göre alt düğümleri ayrıştırma
cevap
Hayır, bir XML belgesinin alt ağacını önce ayrıştırmadan atlayamazsınız. Bu sadece her bir ayrıştırıcı için geçerli, sadece StAX için değil. (için zaten arasında elemanları ayrıştırıldı ettik ima atlamak için noktası bilmek.)
- Ancak her elemanın etkinliği her eleman başlangıç olayı ve bir azalma ile artırmak bir iç içe geçme düzey sayacını tutularak, Hedef düzeyinizin altındaki bir seviyeden gelen tüm olayları görmezden gelmek kolaydır.
Ayrıştırma bir yoldur, rastgele erişilmez, ileri geri atlayamazsınız. (Yine, bu, ayrıştırıcının şimdiye kadar ayrıştırılan her şeyin bir temsilini sakladığını varsayar, ki bu da StAX'ın kaçınmak için yarattığı şeydir.) Ancak tabiki her bir üst etiketin bayt konumunu dosyaya kaydetmeye çalışabilirsiniz. rastgele erişime açık bir dosyaya sahip olursanız araştırın. Yine de bu yaklaşım için birkaç tuzak var.
Sonuç olarak, kullanım durumunuz StAX için iyi bir uyum gibi görünmüyor. VTD-XML'u denediniz mi? Dosyanin ne kadar büyük olduğuna bağlı olarak, tam olarak istediğin gibi olabilir.
üzerinden yapılabilir. Detaylı cevabınız için teşekkürler! Ancak birkaç sorum var: 1) Bir sonraki ebeveyni (kardeş) alt ağacı ayrıştırmadan arayabilirim, ama sadece okuyarak - tam ayrıştırma yapmıyorum? veya alt ağacı aşmak = ayrıştırmak mı? 2) Rastgele erişime ihtiyacım olup olmadığından emin değilim. Her seferinde belirli bir seviye göstermek istiyorum. Bir düğüme tıklarken - ilk seviyedeki çocuklarını göstermek için. Burada rastgele erişim gerekli mi? Bunun için X-Path'a ihtiyacım var mı? ve eğer yaparsam - STAX ile birleştirebilir miyim? Yoksa diğer ayrıştırıcıları aramalı mıyım? 3) VTD-XML 1GB dosyaları için iyi mi? çünkü benim sahip olduğum şey bu ... – user1579191
1. Evet, ayrıştırma olarak bir alt ağaçtan gitmeyi düşündüm. Tabii ki, bu düğümler hakkında herhangi bir şey kaydetmeniz gerekmiyor (bahsettiğim derinlik sayacı dışında, tek bir global 'int'). 2. Bu, bir kullanıcı bir düğüme her tıkladığında olduğu gibi, farklı bir konumdan işlem yapmaya başlamak zorunda olduğunuzdan, etkin bir şekilde rastgele erişimdir. 3. Anlatabildiğim kadarıyla evet. Ama ben bu projeye katılmıyorum ve hiç bu kadar büyük dosyalar üzerinde kullanmayı denemedim. – biziclop
Teşekkürler! son soru (umarım ...): İyi anlaşılıp anlaşılmadığını bilmek istiyorum: Stax'da - bir düğüme her tıkladığımda tüm verileri ayrıştırmak çok zaman alacak, ama diğer yandan Fazla bellek kullanmayın (Bu, herhangi bir veriyi kaydetmez mi? Yani küçük bir dosyayı veya büyük bir dosyayı ayrıştırmamın önemli olmadığı anlamına mı geliyor?). VTD-XML'de - çok fazla bellek kullanır (en azından benim durumumda çok fazla) - fakat daha sonra sadece ilk düğüme tıklandığında yavaş olacaktır (ilk ve tek seferde ayrıştırma ne zaman yapılır?) - ve sonra oldukça hızlı olacak. Sağ? Tekrar teşekkürler, gerçekten bana yardım ettin! – user1579191
- 1. XML Ayrıştırma - Düğümleri çocuklara göre alın
- 2. Virgül ayrıştırma dizgisi ayrıştırma XSLT
- 3. Python ayrıştırma
- 4. özdeğer ayrışma olmalıdır Vikipedi'ye göre özdeğer Ayrıştırma
- 5. Ayrıştırma sunucusuyla çalışmak için 'alt çizgi' alınamıyor
- 6. Java XML ayrıştırma için DOM kullanarak ayrıştırma
- 7. Outlook PST Dosyası Ayrıştırma Python'da Ayrıştırma
- 8. Ayrıştırma sırasında ayrıştırma parseResults nasıl atılır?
- 9. Ayrıştırma ayrıştırma dokümanlardan bir örnekle Sorum şudur
- 10. Treetop SGF Ayrıştırma
- 11. TouchXML XML öznitelikleri ayrıştırma
- 12. Ayrıştırma JSON
- 13. Ayrıştırma dizeleri
- 14. Ayrıştırma XML
- 15. AngleSharp Ayrıştırma
- 16. OCaml ile HTML Ayrıştırma
- 17. StAX
- 18. PHP'de XML Ayrıştırma
- 19. Ayrıştırma, Toplamak ve Python
- 20. "Ayrıştırma" kod satırı, kodun
- 21. libxml2 HTML ayrıştırma
- 22. .NET'te VB6 kodunu ayrıştırma
- 23. Ayrıştırma # # Koşullu Derleme ifadeleri roslyn
- 24. HTML Çeviklik Ayrıştırma
- 25. Yakut ayrıştırma ayrıştırılmış yanıt
- 26. Yuvalanmış üçlü ifadeleri ayrıştırma
- 27. Django'da İsteklerle Ayrıştırma JSON
- 28. Olası Ayrıştırma eşleşmeleriKeyInQuery
- 29. Ayrıştırma Hatası: # enableLocalDatastore (Bağlam) Ayrıştırma `` # başlatmak Ayrıştırma (Bağlam) önceden müracaat edilmelidir `
- 30. XML Ayrıştırma tarafından dinamik denetimleri üretin Ipad'de ayrıştırma
Sadece bazı bölümlerin dallarını almak için tam olarak simule ihtiyacım var. Ancak bu, Dom parser –