2012-05-02 12 views
8

मैंने बहुत सी खोज की है और xjc का उपयोग करने वाले ब्रांड नए बनाने के बजाय मौजूदा डोमेन ऑब्जेक्ट्स को एक्सएमएल स्कीमा को मैप करने का संक्षिप्त उदाहरण नहीं मिल सकता है। मैंने एक बाइंडिंग (xjb) फ़ाइल बनाई है लेकिन अभी भी इसे पूरा करने का कोई तरीका नहीं मिल सकता है।मौजूदा डोमेन ऑब्जेक्ट्स पर JAXB xjc मैपिंग

अगर मैं एक मौजूदा डोमेन वस्तु है कि मैं JAXB जैसे कि निम्न का उपयोग करना चाहते हैं:

package com.blah.domain; 
class CustomerOffice{ 
    private int id; 
    private String name; 
    private String phone; 
} 

और मैं की तरह एक XML स्कीमा है निम्नलिखित:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:www="http://www.blah.com" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.blah.com" elementFormDefault="unqualified"> 
    <xs:element name="Customer"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="id" type="xs:int" nillable="false" minOccurs="1" maxOccurs="1"/> 
      <xs:element name="name" type="xs:string"/> 
      <xs:element name="city" type="xs:string"/> 
      <xs:element name="CustomerOffice" type="www:CustomerOffice" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:complexType name="CustomerOffice"> 
     <xs:sequence> 
     <xs:element name="name" type="xs:string"/> 
     <xs:element name="length" type="xs:int"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

अगर मैं करने के लिए जाना xjc के साथ जेएक्सबी कक्षाएं उत्पन्न करें यह ग्राहक (जो मैं चाहता हूं) नामक एक नई कक्षा तैयार करूंगा। यह ग्राहक कार्यालय (जिसे मैं नहीं चाहता, मैं इसे अपने मौजूदा डोमेन ऑब्जेक्ट का उपयोग करना चाहता हूं) नामक एक नई कक्षा भी तैयार करूंगा।

तो "टाइप: www: ग्राहक ऑफिस" को इंगित करने वाली स्कीमा की बजाय मैं मौजूदा com.blah.domain का उपयोग करना चाहता हूं। ग्राहक ऑफिस

मैंने इसे यथासंभव सरल उदाहरण बनाने की कोशिश की, किसी भी मदद की सराहना की गई।

उत्तर

11

आप जो भी चाहते हैं उसे करने के लिए एक्सजेसी को कॉन्फ़िगर करने के लिए बाहरी बाध्यकारी फ़ाइल का उपयोग कर सकते हैं।

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    version="2.1"> 

    <jxb:bindings schemaLocation="yourSchema.xsd"> 
     <jxb:bindings node="//xs:complexType[@name='CustomerOffice']"> 
      <jxb:class ref="com.blah.domain.CustomerOffice"/> 
     </jxb:bindings> 
    </jxb:bindings> 
</jxb:bindings> 

XJC कॉल

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

सही काम किया है कि! बहुत बहुत धन्यवाद, उम्मीद है कि इससे कुछ अन्य लोगों की मदद मिलेगी जिन्होंने इससे संघर्ष किया है। – colbyjax

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