XML'i işlemek için büyük bir JAXB hayranıyım. Temel olarak, bu soruna bir çözüm sağlar (XML, Java veri yapıları ve XML Şemalarına aşina olduğumu varsayıyorum):
XML ile çalışmak zordur. Temelde bir metin dosyası olan bir XML dosyasını alıp, programınızın daha sonra işleyebileceği bir tür veri yapısına dönüştürmenin bir yoluna ihtiyaç vardır.
JAXB, yazdığınız bir XML Şemasını alacak ve bu şemaya karşılık gelen bir sınıflar kümesi oluşturacaktır. JAXB yardımcı programları, bu XML'i işlemek için veri yapılarının hiyerarşisini yaratacaktır.
JAXB daha sonra bir XML dosyasını okumak ve ardından oluşturulan sınıfların örneklerini oluşturmak için kullanılabilir - XML'inizdeki verilerle yüklü. JAXB bunun tersini de yapar: java sınıflarını alır ve karşılık gelen XML'i oluşturur.
JAXB'yi seviyorum çünkü kullanımı kolay ve Java 1.6 ile birlikte geliyor (1.5 kullanıyorsanız JAXB .jars'ı indirebilirsiniz.) Sınıf hiyerarşisini oluşturma şekli sezgiseldir ve tecrübelerime göre iyi bir iş çıkarır "XML" yi soyutlayarak "veriye" odaklanabiliyorum.
Sorunuzu yanıtlamak için: Küçük XML dosyaları için JAXB'nin aşırı derecede kullanılmasını bekliyorum. Bir XML şeması oluşturmanızı ve sürdürmenizi ve veri yapıları için Java sınıflarını kullanmak için "standart ders kitabı yöntemlerini" kullanmanızı gerektirir. (Ana sınıflar, "düğümleri" temsil eden küçük iç sınıflar ve bunların büyük bir hiyerarşisi.) Dolayısıyla, JAXB, bir uygulama için basit bir doğrusal "tercihler" listesi için muhtemelen o kadar da iyi değildir.
Ancak, oldukça karmaşık bir XML şemanız varsa ve içinde çok sayıda veri varsa, JAXB harikadır. Projemde, ikili (bir C programı tarafından tüketilen) ve XML (böylece insanlar bu verileri tüketip değiştirebilsin) arasında büyük miktarda veriyi dönüştürüyordum. Sonuçta ortaya çıkan XML Şeması önemsizdi (birçok hiyerarşi seviyesi, bazı alanlar tekrarlanabilir, diğerleri tekrarlanamaz), bu nedenle JAXB bunu idare edebilmek için yardımcı oldu.