2013-04-26 25 views
5

मैं Xerces-J का उपयोग कर एक XML दस्तावेज़ को सत्यापित करने का प्रयास कर रहा हूं।एक्सएमएल दस्तावेज़ को सत्यापित करने के लिए Xerces-j का उपयोग

मैं चाहता हूं कि वैधकर्ता किसी भी संबंधित एक्सएसडी या डीटीडी फाइलों को चुनने और हल करने के लिए (schemalocation, nonamespaceschemalocationa और DOCTYPE संदर्भों का उपयोग करके) को हल करे। ऐसा लगता है कि इन संसाधनों की लोडिंग को रिजॉल्वर क्लास में सौंप दिया जा सकता है।

हालांकि मैंने देखा है कि सभी नमूने एक स्कीमा से एक वैधकर्ता बनाने शुरू कर दिया।

क्या यह अन्य तरीकों को ड्राइव करना संभव है, एक्सएमएल से एक्सएमएल दस्तावेज़ को सत्यापित करने के लिए पूछें, और इसे लोड करने के लिए इसे लोड करें, या मुझे पहली बार स्कीमा संदर्भों की तलाश करने वाली XML फ़ाइल को पार्स करना चाहिए, उन्हें लोड करना होगा, फिर एक बनाएं schemas से वैधकर्ता?

एक आदर्श दुनिया में सत्यापनकर्ता भी XSD का समर्थन करेगा 1.1

उत्तर

3

आप जब <! DOCTYPE घोषणाओं या स्कीमा विशेषताओं को देख उपयोग करने के लिए एक EntityResolver के साथ एक पार्सर प्रदान करते हैं। सबसे आम इकाई रिज़ॉल्यूवर कैटलॉग फ़ाइलों का उपयोग करता है, जो अनिवार्य रूप से एक्सएमएल फाइलें या टेक्स्ट फाइलें हैं जो भौतिक फाइलों के लिए सार्वजनिक आईडी, सिस्टम आईडी और यूआरआई के शब्दकोश को परिभाषित करती हैं। org.apache.xml.resolver पैकेज देखें। लेकिन आप अपना खुद का EntityResolver कार्यान्वयन भी प्रदान कर सकते हैं।

CatalogResolver resolver = new CatalogResolver(); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
dbf.setValidating(true); 
dbf.setFeature("http://apache.org/xml/features/validation/dynamic", true); 
DocumentBuilder parser = dbf.newDocumentBuilder(); 
parser.setEntityResolver(resolver); 
Document doc = parser.parse(someFile); 
संबंधित मुद्दे