हमारे पास एक आवश्यकता है जहां XML टैग जावा पीओजेओ विशेषताओं के समान नहीं हैं।
हमें XML टैग को अलग-अलग नाम से POJO में मैप करने की आवश्यकता है।
यहाँ एक ही XML है,
<RES>
<TAG1>
value
</TAG1>
</RES>
यहाँ POJO वर्ग है,
public class Response {
protected String tag1Value;
...}
यहाँ मैं POJO में tag1Value को मैप करना चाहता हूँ।
मैंने पाया है कि सिंटैक्स के नीचे XML का उपयोग जावा विशेषताओं के लिए किया जा सकता है।
public class Response {
@XmlElement(name="TAG1")
protected String tag1Value;
...}
लेकिन मैं यह जानना चाहता हूं कि इसे एक्सएसडी में कैसे कॉन्फ़िगर किया जाए, ताकि एक्सलिमेंट में नाम विशेषता के साथ पीओजेओ उत्पन्न हो सके।
नीचे XSD के साथ जावा विशेषता नाम और XML nae को एक साथ कैसे निर्दिष्ट करें,
<xsd:element name="tag1Value" minOccurs="0" maxOccurs="1">
मदद की सराहना की ...
उत्तर:
जवाब के लिए 0 № 1आप इसे अपने निर्दिष्ट स्कीमा के लिए jaxb बाइंडिंग को अनुकूलित करके कर सकते हैं:
(मैं इस बात पर धारणा बना रहा हूं कि आपका xsd कैसा दिखता है, लेकिन अगर मैं गलत हूं तो आप अपने लक्ष्य नोड के लिए मार्ग को अनुकूलित कर सकते हैं)
<jxb:bindings schemaLocation="../xsd/your_schema.xsd">
<jxb:bindings node="//xs:element[@name="Response"]//xs:complexType//xs:all//xs:element[@name="tag1Value"]">
<annox:annotate target="field">
<annox:annotate annox:class="javax.xml.bind.annotation.XmlElement" name="TAG1" />
</annox:annotate>
</jxb:bindings>
</jxb:bindings>
जवाब के लिए 0 № 2
यह वह बात है जिसके लिए बाइंडिंग होती है।
एक फाइल बनाएं जिसका नाम कुछ हो bindings.xjb
(xjb
कन्वेंशन द्वारा फ़ाइल विलोपन है)। इस फ़ाइल में आप कोड जनरेशन के कुछ पहलुओं को कस्टमाइज़ कर सकते हैं। उदाहरण के लिए, आप उपयोग कर सकते हैं jaxb:property
उत्पन्न वर्ग में संपत्ति का नाम निर्दिष्ट करने के लिए:
<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:bindings
schemaLocation="mySchema.xsd"
node="/xs:schema">
<!-- node is the XPath leading to the element you want to customize -->
<jaxb:bindings node="xs:complexType[@name="SomeComplexType"]/xs:sequence/xs:element[@name="TAG1"]">
<jaxb:property name="tag1Value"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
आप इस फ़ाइल को संकलन के दौरान प्रदान कर सकते हैं xjc mySchema.xsd -b bindings.xjb
या मावेन प्लगइन्स या चींटी कार्यों के कॉन्फ़िगरेशन विकल्पों का उपयोग करना (जो भी आप उपयोग करते हैं)।
यह नाम की संपत्ति उत्पन्न करेगा tag1Value
जिसके साथ टिप्पणी की जाएगी @XmlElement(name="TAG1")
.