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

  • AutoHotkey Tutorials

    AutoHotkey T

    29 Mayıs 2010
  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • wwjoshdu

    wwjoshdu

    18 ŞUBAT 2011