2008-12-11 10 views
10

JAXB unmarshaller को कॉन्फ़िगर कैसे करें ताकि यह तारों से अग्रणी और पिछली सफेद जगहों को ट्रिम कर सके?जेएक्सबी को कैसे कॉन्फ़िगर करें ताकि टैग मूल्य को अनमर्शलिंग करते समय यह सफेद जगहों को ट्रिम कर सके?

@XmlRootElement(name="bean") 
class Bean { 

    @XmlElement(required=true) 
    String name; 

    @XmlElement(required=true) 
    int number; 
} 

मैं चाहूँगा bellow दिया unmarshal एक्सएमएल करने में सक्षम तो bean.name शुरू कर शामिल नहीं है होना करने के लिए और:

उदाहरण के लिए के एक जावा सेम और एक्सएमएल JAXB टिप्पणियों का उपयोग करने के बीच एक सरल बंधन पर विचार करते हैं पिछली सफेद जगहें - "मेरा नाम", नहीं "\ n मेरा नाम \ n"।

+0

दुर्भाग्य से XML पार्सर व्यवहार करता है कि के रूप में "महत्वपूर्ण" खाली स्थान के लिए यदि आप लाइनब्रेक के बिना अपने उत्पादन को फ़ॉर्मेट अन्य सभी हुप्स की तुलना में आसान हो जाएगा कर सकते हैं। .. –

उत्तर

6

एक कस्टम एडाप्टर वर्ग का प्रयोग करें। मैं सोच रहा था कि NormalizedStringAdapter काम करेगा, लेकिन यह केवल अनैमरलिंग के लिए है और यह वही नहीं करता जो आप चाहते हैं।

public class MyNormalizedStringAdapter extends XmlAdapter<String, String> { 

    @Override 
    public String marshal(String text) { 
     return text.trim(); 
    } 

    @Override 
    public String unmarshal(String v) throws Exception { 
     return v.trim(); 
    } 
} 

तो इस तरह से अपनी एडाप्टर के साथ क्षेत्र को सजाने:

@XmlElement(required=true) 
@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class) 
String name; 
+0

क्या कस्टम XmlAdapter बनाने के बिना इसे प्राप्त करने का कोई अन्य तरीका है? – tkokoszka

+3

क्या यह हो सकता है कि NormalizedStringAdapter पूरी तरह टूटा हुआ है? यह कहता है कि यह अग्रणी और पिछली सफेद जगहों को हटा देता है (जावाडोक देखें), लेकिन वास्तव में यह नहीं है! – Kutzi

+0

@ कुटज़ी हां, या तो दस्तावेज़ीकरण या कार्यान्वयन गलत है। यह सब एक जगह के साथ टैब, एलएफ और सीआर अक्षर बदल रहा है। – Kapep

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

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