2012-01-02 16 views
7

हाय stackoverflow दुनिया से एक JAXB बाध्यकारी वर्ग में एक टिप्पणी जोड़ने,एक स्कीमा

मैं एक XSD कि एक विशिष्ट तत्व JAXB द्वारा एक XmlRootElement के रूप में इस्तेमाल किया जा सकता में निर्दिष्ट करना चाहते हैं।

मुझे पता है कि जेनरेट क्लास में एनोटेशन कैसे जोड़ना है: मैं क्या करना चाहता हूं यह निर्दिष्ट करना है कि कोड पीढ़ी से पहले मूल तत्व के रूप में एक तत्व उत्पन्न किया जा सकता है।

मैं बाहरी जेएक्सबी अनुकूलन (.xjb फ़ाइलें) का उपयोग करता हूं। उद्देश्य स्कीमा को संशोधित करने के लिए यहां नहीं है (क्योंकि वे मानकों को परिभाषित कर रहे हैं)।

कोई भी जानता है कि यह कैसे करता है? धन्यवाद!

एनजे

+0

तो तुम स्कीमा या नहीं (अपने प्रश्न में कुछ असंगति) को संशोधित करना चाहते:

JAXB विस्तार प्रणाली है JAXB2 मूल बातें करने के लिए एक नज़र बहुत सुविधाजनक है? – home

+0

नहीं, मैं .xjb फ़ाइल में एक अतिरिक्त अनुकूलन जोड़ना चाहता हूं। – njames

+0

शायद उत्तर की शुरुआत http://codereview.stackexchange.com/questions/1877/jaxb-xjc-code- जनरेशन-adding-xmlrootelement-and-joda-datetime – njames

उत्तर

15

समस्या हल हो गई।

जेएक्सबी प्लगइन एनोटेट http://confluence.highsource.org/display/J2B/Annotate+Plugin नौकरी करें।

(बाहरी बंधन, यानी एक .xjb फ़ाइल) अपने JAXB बाध्यकारी फ़ाइल में निम्न टुकड़ा जोड़ें:

<jaxb:bindings schemaLocation="csw/2.0.2/CSW-discovery.xsd" node="/xs:schema"> 
    <jaxb:bindings node="xs:complexType[@name='GetRecordsType']"> 
    <annox:annotate> 
    <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" 
       name="GetRecordsType" /> 
</annox:annotate> 
    </jaxb:bindings> 
</jaxb:bindings> 

मत भूलना नामस्थान घोषित करने के लिए:

<jaxb:bindings 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:annox="http://annox.dev.java.net" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd" 
    jaxb:extensionBindingPrefixes="xjc annox" version="2.1"> 
... 
</jaxb:bindings> 

और एक चींटी का उपयोग या स्रोतों की पीढ़ी को आगे बढ़ाने के लिए MAVEN कार्य http://confluence.highsource.org/display/J2B/User+Guide

मैं अभी भी मैन्युअल रूप से निर्दिष्ट करता हूं कि (मैन्युअल रूप से एंटी या मैवेन के साथ xjc कार्य के बिना) यह अब काम करता है। (मेरे पास अपनी खुद की एएनटी स्क्रिप्ट है इसलिए मैं एक्सजेसी को मैन्युअल रूप से कॉल करने की खोज करता हूं)। http://confluence.highsource.org/display/J2B/Home

+2

टिप्पणियां कैसे जोड़ें @something ({@ some ("a"), @ some ("b")})? – leet

+1

क्या यह अभी भी प्रासंगिक है? लिंक काम नहीं करते हैं :( –

+0

वास्तव में confluence.highsource.org/... लगता है लेकिन वेब पर खोज नहीं किया? उदाहरण के लिए ... google? ==> https://github.com/highsource/jaxb2-व्याख्या-प्लगइन – njames

संबंधित मुद्दे