SORU
5 HAZİRAN 2009, Cuma


Ne'In JAXB noktası 2'In ObjectFactory sınıfları?

JAXB kullanarak yeniyim ve 2.1.3. xjc benim XML Şema sınıfları bir dizi oluşturmak için JAXB kullandım. Benim şema, her öğe için bir sınıf oluşturma ek olarak, ObjectFactory bir sınıf yarattı.

Doğrudan birşey elemanları, örneğin başlatmasını beni alıkoyan görünmüyor

MyElement element = new MyElement();

öğreticiler ise tercih gibi görünüyor

MyElement element = new ObjectFactory().createMyElement();

Eğer objectfactory.java içine bakarsam görüyorum

public MyElement createMyElement() {
    return new MyElement();
}

anlaşma nedir? Neden ObjectFactory sınıfı burada tutmak için zahmet etmeme gerek var mı? Ayrıca eğer değişmiş bir şema yeniden derlemek için yerinde olsam üzerine olacak sanırım.

CEVAP
5 HAZİRAN 2009, Cuma


Geriye uyumluluk tek nedeni bu değil. :-P

Bir elemanın içeriğini kabul değerleri üzerindeki kısıtlamaları karmaşık olanları gibi daha karmaşık şemalar, bazen JAXBElement gerçek nesneleri oluşturmanız gerekir. Elle oluşturmak için genellikle önemsiz değildir, create* yöntem sizin için zor işi yapmak. Örnek (XHTML 1.1 şemadan):

@XmlElementDecl(namespace = "http://www.w3.org/1999/xhtml", name = "style", scope = XhtmlHeadType.class)
public JAXBElement<XhtmlStyleType> createXhtmlHeadTypeStyle(XhtmlStyleType value) {
    return new JAXBElement<XhtmlStyleType>(_XhtmlHeadTypeStyle_QNAME, XhtmlStyleType.class, XhtmlHeadType.class, value);
}

Bu <head> bir etiket içine <style> bir etiket alır:

ObjectFactory factory = new ObjectFactory();
XhtmlHtmlType html = factory.createXhtmlHtmlType();
XhtmlHeadType head = factory.createXhtmlHeadType();
html.setHead(head);
XhtmlStyleType style = factory.createXhtmlStyleType();
head.getContent().add(factory.createXhtmlHeadTypeStyle(style));

ObjectFactory ilk üç kullanır gereksiz () tutarlılık için yararlı olsa da kabul edilebilir, ama dördüncü bir JAXB çok, çok daha kolay hale getirir. Görüntüleme new JAXBElement dışarı yazmak zorunda, her zaman!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • RD

    RD

    19 NİSAN 2006
  • theKGB65

    theKGB65

    24 Aralık 2007