2011-10-26 18 views
8

मैं अपने वर्गों से xsd स्कीमा उत्पन्न करने के लिए जेएक्सबी एनोटेशन का उपयोग कर रहा हूं।जेएक्सबी डिफ़ॉल्ट विशेषता मान

पैरामीटर डिफ़ॉल्ट के साथ एनोटेशन @XmlElementValue तत्व के लिए डिफ़ॉल्ट मान सेट करता है। क्या @XmlAttribute के लिए डिफ़ॉल्ट मान सेट करना संभव है?

पीएस मैं जाँच की है कि XSD वाक्य रचना गुण

+1

क्या ... एनोटेशन प्रभावी रूप से कुछ डिफ़ॉल्ट वैल्यू कुंजी नहीं है। मैं वास्तव में काफी हैरान हूँ। –

+0

तत्वों के लिए डिफ़ॉल्ट मानों पर चर्चा की गई है [यहां] (http://stackoverflow.com/questions/371127) - शायद आपको विशेषताओं के लिए मदद करेगा। –

उत्तर

3

चाहता हूँ सकता है के लिए डिफ़ॉल्ट मान इस जाँच की अनुमति देते हैं: Does JAXB support default schema values?

ईमानदारी से कहूं तो मैं क्यों मानक JAXB में एक विशेषता डिफ़ॉल्ट विकल्प नहीं है एक सुराग नहीं है।

0

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

0

एक्सएमएल गुणों के लिए डिफ़ॉल्ट मान गेटटर विधि के अंदर जाता है।

उदाहरण के लिए

,

customer.xsd

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema"> 
    <element name="Customer"> 
     <complexType> 
      <sequence> 
       <element name="element" type="string" maxOccurs="1" minOccurs="0" default="defaultElementName"></element> 
      </sequence> 
      <attribute name="attribute" type="string" default="defaultAttributeValue"></attribute> 
     </complexType> 
    </element> 
</schema> 

यह नीचे की तरह वर्ग उत्पन्न होगा।

@XmlRootElement(name = "Customer") 
public class Customer { 

    @XmlElement(required = true, defaultValue = "defaultElementName") 
    protected String element; 
    @XmlAttribute(name = "attribute") 
    protected String attribute; 

    ...... 

    public String getAttribute() { 
     //here the default value is set. 
     if (attribute == null) { 
      return "defaultAttributeValue"; 
     } else { 
      return attribute; 
     } 
    } 

बनाया गया नमूना XML को पढ़ने के लिए

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Customer><element/></Customer> 

जब हम अपने मुख्य वर्ग में मार्शल के तर्क लिखें।

File file = new File("...src/com/testdefault/xsd/CustomerRead.xml"); 
      JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); 

      Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
      Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file); 
      System.out.println(customer.getElement()); 
      System.out.println(customer.getAttribute()); 

यह कंसोल में प्रिंट करेगा। डिफ़ॉल्ट एलिमेंटनाम डिफ़ॉल्ट एट्रिब्यूट वैल्यू

पीएस -: तत्वों का डिफ़ॉल्ट मान प्राप्त करने के लिए आपको xml में तत्व की रिक्त प्रति प्राप्त करने की आवश्यकता है जिसे मार्शल किया जा रहा है।

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