2012-03-07 7 views
5

मैं एक XSD ऐसा ही कुछ शामिल है:jaxb का उपयोग करते हुए pojos उत्पन्न करते समय xsd में समान नाम वाले तत्वों और विशेषताओं को कैसे प्रबंधित करें?

<xs:complexType> 
    <xs:sequence minOccurs="0"> 
    <xs:element ref="HereIsTheProblem"/> 
    <xs:element ref="blaBla"/> 
    </xs:sequence> 
    <xs:attribute name="something" type="xs:string" use="required"> 
    <xs:annotation/> 
    </xs:attribute> 
    <xs:attribute name="somethingElse" type="xs:string"> 
    <xs:annotation/> 
    </xs:attribute> 
    <xs:attribute name="HereIsTheProblem" type="xs:string"> 
    <xs:annotation/> 
    </xs:attribute> 
</xs:complexType> 

अब जब मैं JAXB का उपयोग कर जावा वर्गों उत्पन्न करने के लिए यह विफल स्कीमा पार्स करने के लिए प्रयास करें:

[ERROR] Element "{http://something.somemorething.com/etc/}HereIsTheProblem" shows up in more than one properties. 

कैसे किसी भी संशोधन करने के बिना इस को हल करने स्कीमा में?

पुनश्च: मेरी JAXB संस्करण 2.1.13

उत्तर

7

आप एक बाध्यकारी फ़ाइल JAXB का संकेत है कि यह कैसे इस नाम टक्कर संभाल चाहिए उपयोग करने की आवश्यकता है। उदाहरण के लिए, bindings.xjb की तरह एक फ़ाइल का नाम कुछ में कुछ इस तरह से रख:

<jaxb:bindings version="2.1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:com.fnf="http://www.fnf.com/xes"> 
    <jaxb:bindings schemaLocation="your schema location here" node="/xs:schema"> 
    <jaxb:bindings node="//XPath selector"> 
     <jaxb:property name="HereIsTheProblem2" /> 
    </jaxb:bindings> 
    </jaxb:bindings> 
</jaxb:bindings> 

एक पूरी स्कीमा के बिना आप एक पूर्ण समाधान प्रदान नहीं कर सकते

+1

यह आवश्यक है के रूप में सब कुछ के लिए बाध्यकारी निर्दिष्ट करने के लिए कुंआ? या केवल टक्कर जब जैक्सब आराम से संभालती है, तो कृपया स्पष्टीकरण दें। –

+0

नहीं, केवल टक्कर अनिवार्य है। आप बाकी को भी संशोधित करने के लिए स्वतंत्र हैं, लेकिन यह आवश्यक नहीं है। मूल रूप से आपको उन सभी चीज़ों के लिए बाध्यकारी उपयोग करना चाहिए जो वैध कक्षाएं उत्पन्न करने के लिए जैक्सब को रोकती हैं। बाइंडिंग का उद्देश्य समान नामों को कम करना है। –

+1

बहुत बहुत धन्यवाद, मैं कल से इसे देखना शुरू कर दूंगा, उम्मीद है कि इसके बारे में कोई और समस्या नहीं होगी। –