JAXB सरल प्लगइन अभी भी उपयोगी है?



jaxb2-basics xjb (1)

अस्वीकरण: मैं सरलीकृत प्लगइन का लेखक हूं जो कि जेएक्सबी 2 मूल बातें का हिस्सा है।

प्लगइन एक परियोजना अच्छी तरह से और ज़िंदा है, लेकिन मेरे प्रलेखन सर्वर समय-समय पर मर जाते हैं। मेरे पास कोई भी होस्टिंग बनाए रखने के लिए कोई संसाधन नहीं है इसलिए मैं अपनी सारी परियोजनाओं को गिटहब में ले जा रहा हूं।

आप यहां JAXB2 मूलभूत प्रोजेक्ट पा सकते हैं:

https://github.com/highsource/jaxb2-basics

प्रलेखन अभी तक नहीं चले गए हैं, लेकिन यहां इसका परीक्षण करने वाले परीक्षण परियोजनाओं की एक कड़ी है:

https://github.com/highsource/jaxb2-basics/tree/master/tests/issues

नीचे स्कीमा का एक टुकड़ा है जो simplify:as-element-property का उपयोग करता है simplify:as-element-property अनुकूलन:

<xs:complexType name="gh1" mixed="true">
    <xs:sequence>
        <xs:element name="a" type="xs:string">
            <xs:annotation>
            <xs:appinfo>
                <simplify:as-element-property/>
            </xs:appinfo>
        </xs:annotation>
        </xs:element>
        <xs:element name="b" type="xs:int"/>
    </xs:sequence> 
</xs:complexType>

मैं कुछ घंटों में सर्वर को ऑनलाइन वापस लाऊंगा।

कृपया अपनी स्कीमा / अनुकूलन के लिए हमें जांचने के लिए पोस्ट करें। आपकी समस्या यह है कि आपने गलत जगह पर अनुकूलन डाल दिया है। कभी-कभी यह पता लगाना कठिन होता है

अद्यतन करें

यह गलती:

"Unsupported binding namespace "http://jaxb2-commons.dev.java.net/basic/simplify". Perhaps you meant "http://jaxb.dev.java.net/plugin/code-injector"?"

इसका मतलब है कि प्लग-इन अनुपलब्ध है या सक्रिय नहीं है। मुझे लगता है कि आप maven-jaxb2-plugin उपयोग करते हैं। फिर सुनिश्चित करें कि आपके पास jaxb2-basics basicics JAXB2 प्लगइन के रूप में है और इसमें -Xsimplify स्विच भी शामिल है। यहाँ एक नमूना है :

        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <configuration>
                <extension>true</extension>
                <args>
                    <arg>-Xsimplify</arg>
                </args>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics</artifactId>
                    </plugin>
                </plugins>
            </configuration>
        </plugin>

इसके बाद, आपकी मूल त्रुटि "इस का सम्मान करने में असमर्थ ... कस्टमाइज़ेशन" आप से संबंधित हो सकते हैं जहां आप ते अनुकूलन रख सकते हैं आपने इसे तत्व पर रखा है (जो कि मैं भी करना चाहता हूं)।

लेकिन कुछ मामलों में एक्सजेसी इन अनुकूलन को अन्य स्कीमा घटकों से पढ़ता है। आपके मामले में, xs:choice पर अनुकूलन को जगह देने का प्रयास करें xs:choice

अगर त्रुटि बनी रहती है, तो कृपया गिटहब पर एक समस्या दर्ज करें जो न्यूनतम स्कीमा प्रदान करता है जो त्रुटि को पुन: प्रस्तुत करता है। मैं इसे फिर ध्यान रखूंगा।

अपडेट 2

सर्वर वापस ऑनलाइन है, लेकिन मैंने अब जेएएएबी 2 सरल प्लगइन के दस्तावेज को गिटहब में ले जाया है:

https://github.com/highsource/jaxb2-basics/wiki/JAXB2-Simplify-Plugin

अपडेट 3

संस्करण 0.9.1 के साथ अंतिम समाधान यहां स्केच किया गया है:

https://github.com/highsource/jaxb2-basics/issues/3

इसके साथ कक्षा को अनुकूलित करें:

<simplify:property name="type2OrType3"> <simplify:as-element-property/> </simplify:property>

उदाहरण

मैंने यहां प्रश्न का समाधान करने की कोशिश की है JAXB सरल प्लगइन बनाम * .xjb

लेकिन यह निम्नलिखित अपवाद के साथ विफल हुआ

"कंपाइलर इस सरलता को मानने में असमर्थ था: जैसा कि-तत्व-संपत्ति अनुकूलन। यह किसी गलत जगह से जुड़ा हुआ है, या अन्य बाइंडिंग के साथ असंगत है।"

यह मैं इस्तेमाल किया अनुकूलन बाध्यकारी है

<jaxb:bindings node="//xs:complexType[@name='Op']//xs:choice/xs:element[@name='Time']">
  <simplify:as-element-property/>
</jaxb:bindings>

jaxb सरल प्लगइन संगम पृष्ठ सुलभ नहीं है, इसलिए किसी ने इस प्लगइन का इस्तेमाल किया है और एक उदाहरण दे सकते हैं कृपया?

जवाब के अनुसार यहां मेरा अद्यतन स्कीमा है I

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"   attributeFormDefault="unqualified" xmlns="http://www.amadeus.com/APT/FOM/00" targetNamespace="http://www.amadeus.com/APT/FOM/00" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify" jaxb:extensionBindingPrefixes="simplify">  
 ...
 ...
<xs:complexType>
  <xs:sequence>
     <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="Time" type="xs:dateTime" minOccurs="1" maxOccurs="1">
            <xs:annotation>                 
              <xs:appinfo>
                <simplify:as-element-property />
              </xs:appinfo>
            </xs:annotation>
        </xs:element>            
        ... ...
     </xs:choice>
     ...

मेवेन बिल्ड के दौरान अपवाद "असम्बद्ध बाध्यकारी नाम स्थान" जैसे http://jaxb2-commons.dev.java.net/basic/simplify "हो सकता है। शायद आपका मतलब है" http://jaxb.dev.java.net/plugin / कोड-इंजेक्टर "?"