2011-03-02 24 views
6

के विरुद्ध एक org.w3c.dom.Document को कैसे सत्यापित करें JAXP का उपयोग कर XML स्कीमा के विरुद्ध एक (पहले से पार्स किए गए) org.w3c.dom.Document को कैसे सत्यापित करें?JAXP: किसी XML स्कीमा

उत्तर

12

आप इसके लिए javax.xml.validation एपीआई का उपयोग कर सकते हैं।

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
URL schemaURL = // The URL to your XML Schema; 
Schema schema = sf.newSchema(schemaURL); 
Validator validator = schema.newValidator(); 
DOMSource source = new DOMSource(xmlDOM); 
validator.validate(source); 

नीचे दिए गए उदाहरण दर्शाता है कि कैसे एक स्कीमा के खिलाफ एक JAXB ऑब्जेक्ट मॉडल को मान्य करने के, लेकिन आप इसे डोम के लिए एक DOMSource साथ JAXBSource को बदलने के लिए आसान है देखेंगे:

+0

धन्यवाद ब्लेज़। हालांकि सीधे सवाल से संबंधित नहीं है, मैं आपको एक और पूछना चाहता हूं: क्या होगा यदि निर्दिष्ट स्कीमा (जिसे स्कीमाफैक्टरी में स्ट्रीमसोर्स द्वारा पारित किया गया है) में एक और स्कीमा शामिल है जो केवल क्लासलोडर संसाधन के रूप में उपलब्ध है? दुर्भाग्यवश, दो स्ट्रीमसोर्स पास करने से काम नहीं हुआ। – MRalwasser

+2

@MRalwasser - 'SchemaFactory.setResourceResolver' देखें। javadocs में सभी प्रकार की महान जानकारी है ... – jtahlborn

+0

@jtahlbborn: धन्यवाद, यह काम किया। लेकिन: ऐसा लगता है कि जब किसी दस्तावेज़ को प्रमाणित करते हैं कि स्कीमा के डिफ़ॉल्ट मानों का सम्मान नहीं किया जाता है, तो दस्तावेज़ और उसके नोड्स छूटे रहते हैं। – MRalwasser

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