xml java nesnesine nasıl ayrıştırılır?

Bazı kuralları yapılandırmak için kullanılan bir XML'im var, karmaşık bir yapıya sahip değil, ancak bu yapılandırma sistemimin herhangi bir yerinde kullanılıyor, bu yüzden bu XML'i java nesnesine ayrıştırmak ve singleton modu olarak tasarlamak istiyorum, çok fazla kod yazmadan XML'i doğrudan Java nesnesine ayrıştırmak için kullanabileceğim iyi bir yol var mı?

Google'da biraz araştırma yaptım ve JAXB'nin bir seçenek olduğunu biliyorum, uygulamam sadece kuralları okuyan ve ardından işleri takip eden bazı araç programları, JAXB web hizmeti için daha yaygın olarak kullanılabilir, projelerime uyuyor mu?

Evet ise, en önemli soru, xsd dosyasına göre java nesne kaynak sınıfı oluşturmak için xjc kullandım, ayrıştırmadan sonra bu configurationType nesnesini doğrudan alacağım, tekrar dönüştürmem gerekli mi (JaxB sınıflarından sahip olduğum java pojo nesne yapılandırmasına), çoğu kodlayıcının bunu yaptığını görüyorum, ama neden? çünkü bunlar bazı verilerdir, sadece oluşturulan nesneden JAXB'ye ve kendimizin oluşturduğu POJO nesnesine kopyalayın

JAXB ideal bir çözümdür. Ancak bunun için mutlaka xsd ve xjc'ye ihtiyacınız yoktur. Çoğu zaman bir xsd'niz yoktur ama xml'inizin ne olduğunu bilirsiniz. Basitçe xml'inizi analiz edin, örn,


    29
    mkyong

Gerekli model sınıf(lar)ını oluşturun:

@XmlRootElement
public class Customer {

    String name;
    int age;
    int id;

    public String getName() {
        return name;
    }

    @XmlElement
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    @XmlElement
    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    @XmlAttribute
    public void setId(int id) {
        this.id = id;
    }

}

Çözmeye çalış:

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(new File("C:\\file.xml"));

Sonuçları kontrol edin, hataları düzeltin!

Yorumlar (6)

JAXB kullanarak Unmarshall gerçekleştirmek için:

  1. Verilen XML'i XSD'ye dönüştürün (kendiniz veya çevrimiçi dönüştürücü ile),

  2. Eclipse'te bir JAXB projesi oluşturun,

  3. XSD dosyası oluşturun ve dönüştürülen XSD içeriğini içine yapıştırın,

  4. **XSD dosyasına sağ tıklayın--> Generate--> JAXB Classes-->talimatları izleyin (bu, src'deki tüm gerekli .java dosyalarını, yani bir paket bilgisi, nesne fabrikası ve pojo sınıfı oluşturacaktır),

  5. Unmarshall işlemini gerçekleştirmek için src içinde başka bir .java dosyası oluşturun ve çalıştırın.

Mutlu Kodlamalar !!!

Yorumlar (0)

JAXB, xml ile java sınıflarını sorunsuz bir şekilde eşleştirdiği için güvenilir bir seçimdir. Ancak başka çerçeveler de mevcuttur, işte bunlardan biri:

https://code.google.com/p/xmappr/

Yorumlar (1)