2014-05-06 7 views
6

के केवल भाग के लिए xjc हम xml को ऑब्जेक्ट्स के मैपिंग के लिए उपयोग करने की योजना बना रहे हैं। हमारी आवश्यकता ऐसी है कि हम दस्तावेज़ के केवल एक हिस्से (थोड़ा बड़ा) पर काम करेंगे, इसलिए हम केवल उस भाग (एक टुकड़े) को वस्तुओं में परिवर्तित करना चाहते हैं। इसलिए, हम xsd में सभी तत्वों के लिए कक्षाएं नहीं बनाना चाहते हैं।xjc स्कीमा

कक्षाओं को उत्पन्न करते समय हम कुछ तत्वों को अनदेखा करने या विशिष्ट तत्वों पर विचार करने के लिए xjc से कैसे पूछ सकते हैं?

जो मैंने पढ़ा है, उससे हम xjc के व्यवहार को अनुकूलित करने के लिए बाइंडिंग फ़ाइल का उपयोग कर सकते हैं, लेकिन तत्वों को अनदेखा करने के लिए हम स्कीमा में क्या डाल सकते हैं।

+0

आप XSD या जावा एनोटेशन का उपयोग कर रहे वर्गों उत्पन्न करने के लिए? –

+0

हम xsd का उपयोग कर रहे हैं, लेकिन यह xsd पूरे दस्तावेज़ के लिए केवल उस भाग का नहीं है जिसकी आवश्यकता है। साथ ही, मुझे यकीन नहीं है कि कक्षाएं उत्पन्न करने के लिए मैं जावा एनोटेशन का उपयोग कैसे कर सकता हूं? क्या आप मुझे कुछ लिंक पर इंगित कर सकते हैं? – OKOK

+0

क्या आपको अब तक अपनी समस्या का समाधान मिला? मेरी भी यही समस्या है। इसे और भी खराब बनाने के लिए: एक्सएसडी के अप्रयुक्त हिस्सों ने एक्सजेसी को त्रुटियों को फेंक दिया है, क्योंकि दो समान नामित प्रकार विंडोज़ पर एक ही फ़ाइल नाम पर उबालते हैं। –

उत्तर

2

आप एक्सजेसी को एक उत्पन्न करने के बजाय मौजूदा वर्ग का उपयोग करने के लिए बाहरी बाध्यकारी फ़ाइल का उपयोग कर सकते हैं। आप अपने एक्सएमएल स्कीमा के हिस्सों को बाहर करने के लिए जेएक्सबी प्राप्त करने के लिए एक अस्तित्वहीन वर्ग को इंगित करके इसका लाभ उठा सकते हैं। नीचे दिए गए उदाहरण में गैर-अस्तित्व वर्ग com.example.Fake का उपयोग जटिल प्रकार के नाम Foo के लिए किया जाएगा।

binding.xml

<jxb:bindings schemaLocation="yourSchema.xsd"> 
    <jxb:bindings node="//xs:complexType[@name='Foo']"> 
     <jxb:class ref="com.example.Fake"/> 
    </jxb:bindings> 
</jxb:bindings> 

XJC कॉल

xjc -d outputDir -b binding.xml yourSchema.xsd 
+1

आपके सुझाव के लिए धन्यवाद। एकमात्र चीज यह है कि मेरी स्कीमा काफी बड़ी है इसलिए कई तत्वों के लिए बाइंडिंग लिखनी होगी .... जो मुझे लगता है कि आवश्यक भागों के लिए पीओजेओ लिखने और उस पर एनोटेशन डालने के बराबर होगा। कोई आसान तरीका? मुझे लगता है मैं बहुत आलसी आवाज: पी – OKOK

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