2009-04-30 3 views
19

स्पष्ट रूप से जेएक्सबी के संस्करण 2 में - वैधकर्ता वर्ग को बहिष्कृत कर दिया गया है - क्या इसका मतलब यह है कि मार्शलर स्वचालित रूप से आपके एक्सएमएल को मान्य कर रहा है? यदि ऐसा है तो यह कुछ गलत XML के बारे में शिकायत नहीं कर रहा है जो मैं बना रहा हूं! क्या कोई मुझे यह सलाह दे सकता है कि मैं एक्सएसडी स्कीमा के अनुरूप होने के लिए मार्शल एक्सएमएल को कैसे सत्यापित कर सकता हूं।क्या कोई JAXB 2.0 के साथ marshalled XML को मान्य कर सकता है?

बहुत धन्यवाद।

उत्तर

27

जेएक्सपी 2.0 स्कीमा सत्यापन फ्रेमवर्क के उपयोग के माध्यम से जेएक्सबी 2.0 में सत्यापन क्षमताओं का विस्तार किया गया है।

कहाँ इससे पहले कि आप ने क्या किया:

unmarshaller.setValidating(true); 

अब आप क्या करने की जरूरत:

SchemaFactory sf = SchemaFactory.newInstance(
    javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI); 
Schema schema = sf.newSchema(new File("myschema.xsd")); 
unmarshaller.setSchema(schema); 

आप setSchema में अशक्त पार कर लेते हैं, यह मान्यता अक्षम करता है।

कृपया this reference देखें।

+1

क्या आप एक ही कोड को मार्शलर के लिए रखते हैं - यह कोड ऐसा लगता है कि यह एक UNMARSHALLER के लिए है ... – Vidar

+1

हां। आप marshaller और unmarshaller के लिए एक ही चीज़ कर सकते हैं। –

2

आप सत्यापित करने के लिए जावा वस्तुओं, एक स्कीमा के अनुसार मान्य XML उत्पन्न JAXB-सत्यापन परियोजना को देखो देख रहे हैं:

https://jaxb-verification.dev.java.net/

यह xjc है कि एक उत्पन्न होगा एक JAXB आरआई प्लगइन है एक्सएमएल स्कीमा के लिए ऑब्जेक्ट वेरिफायर कार्यान्वयन। यह XML को मान्य करने के लिए जावा ऑब्जेक्ट्स को मार्शल करने से बचाता है।