2013-07-23 3 views
8

मेरे पास एक एक्सएसडी एनोटेशन है कि मैं मार्शल को जावा ऑब्जेक्ट में लाने की कोशिश कर रहा हूं। मैं चाहता हूं कि जावा अपने मूल्य के लिए बिगडेसिमल के साथ समाप्त हो। यह करने के लिए xsd में मैं क्या दर्ज करूं? मैं एक xjc चींटी कार्यजावा जैक्सबी पीढ़ी, मैं अपने xsd से एक बड़ा डेसीमल कैसे प्राप्त करूं?

<xjc schema="my.xsd" destdir="generated" header="false" extension="true" /> 

यहाँ का उपयोग कर रहा प्रासंगिक XSD है -

<complexType name="Size"> 
    <attribute name="height" type="BigDecimal"></attribute> <!-- this is wrong--> 
</complexType> 

मैं उत्पन्न वर्ग के लिए इस के साथ खत्म करना चाहते हैं -

public class Size { 
@XmlAttribute(name = "height") 
    protected BigDecimal height; 
} 

उत्तर

8

एक JAXB (JSR-222) कार्यान्वयन decimal प्रकार से एक java.math.BigDecimal उत्पन्न होगा ( JAXB 2.2 विनिर्देश में टेबल 6-1 देखें)।

XML स्कीमा (schema.xsd)

<?xml version="1.0" encoding="UTF-8"?> 
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/schema" 
    xmlns:tns="http://www.example.org/schema" 
    elementFormDefault="qualified"> 

    <element name="foo"> 
     <complexType> 
      <sequence> 
       <element name="bar" type="decimal"/> 
      </sequence> 
     </complexType> 
    </element> 

</schema> 

XJC कॉल

xjc schema.xsd 

जावा मॉडल (फू)

package org.example.schema; 

import java.math.BigDecimal; 
import javax.xml.bind.annotation.*; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = {"bar"}) 
@XmlRootElement(name = "foo") 
public class Foo { 

    @XmlElement(required = true) 
    protected BigDecimal bar; 

    ... 

} 
1

मैं इस लगा बाहर।

<xjc schema="my.xsd" destdir="generated" binding="myBinding.xjb" header="false" extension="true" /> 

XSD =

<attribute name="height" type="decimal"></attribute> 

इस प्रकार दशमलव के रूप में चिह्नित कुछ भी मतलब है हो जाएगा - जवाब एक binding.xjb वर्ग

बाध्यकारी =

<jxb:javaType 
    name="java.math.BigDecimal" 
    xmlType="xs:decimal"/> 

चींटी का उपयोग करने के लिए है एक बड़े दशमलव में लेकिन मेरे मामले में यह ठीक है। मनाइए कि यह किसी और के लिए सहायक हो।

+1

एक JAXB कार्यान्वयन ग होगा 'xs: दशमलव 'प्रकार के लिए' java.math.bigDecimal' प्रॉपर्टी को रीट करें, कोई बाइंडिंग फ़ाइल आवश्यक नहीं है: http://stackoverflow.com/a/17823855/383861 –

+1

मैंने अभी इसका परीक्षण किया है और @BlaiseDoughan सही है। मैंने निश्चित रूप से इसे एक-दूसरे से सोचा था। धन्यवाद! – spartikus

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