SORU
4 Mayıs 2009, PAZARTESİ


JAXB tarafından @XmlRootElement oluşturulan hayır

Bu FpML Java sınıfları (Finanial Ürünleri İşaretleme Dili) sürüm 4.5 oluşturmak için çalışıyorum. Kod bir ton oluşturulur, ama bunu kullanamazsınız. Bu basit bir belge seri hale getirmek için çalışıyoruz:

javax.xml.bind.MarshalException
  - with linked exception: [com.sun.istack.SAXException2: unable
  to marshal type
  "org.fpml._2008.fpml_4_5.PositionReport"
  as an element because it is missing an
  @XmlRootElement annotation]

Aslındahayırclassses @XmlRootElement bu açıklama, ben yanlış ne olabilir?. Xjc (JAXB 2.1)-ana-4-5 fpml işaret ediyorum.sonra tüm türleri kapsayan annotation,.

CEVAP
31 Ocak 2010, Pazar


Kravat birlikte başkalarının neler ifade ya da ima etti, kurallara göre hangi JAXB XJC karar olup olmadığını ya da değil koymak @XmlRootElement açıklama üzerinde oluşturulan bir sınıf olmayan önemsiz (see this article).

@XmlRootElement JAXB çalışma düzeni belli bilgi/unmarshal belirli bir nesne, özellikle XML öğesi adı ve ad Şerif gerektirdiği için var. Sadece Marshaller için herhangi bir eski nesne geçemezsiniz. @XmlRootElement bu bilgileri sağlar.

Bu açıklama sadece bir kolaylık olduğunu, ancak - JAXB bunu gerektirmez. Alternatif JAXBElement @XmlRootElement, ama bir nesne olarak aynı bilgileri sağlayan kapsayıcı nesneleri, yerine bir açıklama kullanmaktır.

Ancak, JAXBElement nesneleri XML öğesi adı ve iş mantığı genellikle yok olan Ad, bilmeniz gereken bu yana inşa hantaldır.

XJC sınıf bir model oluşturduğunda neyse ki, aynı zamanda bir sınıf ObjectFactory denilen oluşturur. Bu aynı zamanda XJC için bir yer olarak v1, JAXB ile geriye dönük uyumluluk kendi nesneleri JAXBElement ambalaj kağıtları oluşturmak oluşturulan fabrika yöntemleri koymak için kısmen var. Bu konuda endişelenmenize gerek yok bu yüzden XML adını kolları ve salt okunur bir özelliktir. Sadece ObjectFactory yöntemlerle bakmak lazım (ve büyük şema için, yüzlerce kişi olabilir) ihtiyacınız bulmak için.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008
  • stokelycalm

    stokelycalm

    28 Aralık 2010