2010-03-18 14 views
8

मैं एक XML स्कीमा बनाया है (foo.xsd) मार्शल और xjc इस्तेमाल किया JAXB के लिए मेरे बाध्यकारी कक्षाएं बनाने के लिए करने के लिए। आइए मान लें कि मूल तत्व collection है और मैं एन document ऑब्जेक्ट्स लिख रहा हूं, जो कि जटिल प्रकार हैं।मान्यता JAXB और StAX का उपयोग कर XML दस्तावेज़

क्योंकि मैं बड़ी एक्सएमएल फाइलें लिखने की योजना बना रहा हूं, मैं collection रूट तत्व लिखने के लिए स्टैक्स का उपयोग कर रहा हूं, और Marshaller.marshal(JAXBElement, XMLEventWriter) का उपयोग कर मार्शल दस्तावेज़ सबट्रीज़ में जेएक्सबी। यह दृष्टिकोण jaxb's unofficial user's guide द्वारा अनुशंसित किया गया है।

मेरे सवाल है, मैं कैसे एक्सएमएल मान्य कर सकते हैं, जबकि यह मार्शल किया जा रहा है? अगर मैं JAXB marshaller (Marshaller.setSchema() का प्रयोग करके) के लिए एक स्कीमा बाँध, मैं सत्यापन त्रुटियों मिलता है क्योंकि मैं केवल एक सबट्री वास्ते हूँ (यह है कि यह collection मूल तत्व "नहीं देख रहा है शिकायत है)। मुझे लगता है कि क्या मैं वास्तव में करने के लिए एक बाँध है चाहता हूँ Stax XMLEventWriter या ऐसा ही कुछ करने के लिए स्कीमा।

इस समग्र दृष्टिकोण पर किसी भी टिप्पणी उपयोगी होगा। असल में मैं JAXB उपयोग करने के लिए स्मृति से बाहर चलने के बिना unmarshal बड़े XML दस्तावेज़ों मार्शल और करने के लिए सक्षम होना चाहते हैं, तो अगर वहाँ एक बेहतर ऐसा करने का तरीका मुझे बताएं।

+0

+1 अच्छा प्रश्न है। – skaffman

उत्तर

3

कुछ स्टैक्स कार्यान्वयन आउटपुट को सत्यापित करने में सक्षम प्रतीत होते हैं। इसी तरह के प्रश्न के उत्तर का उत्तर देखें:

Using Stax2 with Woodstox

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