2011-11-11 10 views
5

मुझे इनकमिंग एक्सएमएल दस्तावेजों का एक गुच्छा पार करने की जरूरत है लेकिन इसमें डीटीडी घोषणा नहीं है। वर्तमान में मैं एसएक्स पार्सर का उपयोग कर एक्सएमएल दस्तावेजों को पार्स कर रहा हूं लेकिन डीटीडी सत्यापन के बिना। अब मैं डीटीडी सत्यापन लागू करना चाहता हूं। डीटीडी स्वयं द्वारा बनाया गया है। मैं अपने द्वारा बनाई गई डीटीडी का उपयोग कर एक एक्सएमएल फाइल को कैसे सत्यापित कर सकता हूं (एसएक्स पार्सर)? मुझे ट्रांसफॉर्मर का उपयोग करके कुछ ट्यूटोरियल मिले लेकिन सभी डोम पार्सर के लिए।जावा में एक्सएमएल फ़ाइल में स्थानीय डीटीडी फ़ाइल के सत्यापन को कैसे लागू करें?

एसएक्स पार्सर का उपयोग करके एक्सएमएल फ़ाइल का विश्लेषण कैसे करें और डीटीडी सत्यापन को भी लागू करें। कोई मदद ....

उत्तर

2

नीचे एक नमूना है कि मैं तुम क्या चाहते करने के लिए मदद कर सकता है विश्वास करते हैं:

private void loadXML(Reader reader) throws ParserConfigurationException, SAXException { 
    SAXParserFactory parserFactory = SAXParserFactory.newInstance(); 
    parserFactory.setValidating(true); 
    SAXParser parser = parserFactory.newSAXParser(); 
    parser.parse(new InputSource(reader), new MyHandler()); 
} 

private static class MyHandler 
     extends DefaultHandler { 

    private static final String PREFS_DTD_URI = "http://www.example.com/dtd/document.dtd"; 

    public InputSource resolveEntity(String publicId, String systemId) throws SAXException { 
     if (systemId.equals(PREFS_DTD_URI)) { 
      InputSource is = new InputSource(new StringReader(PREFS_DTD)); // PREFS_DTD is a string containing actual DTD, any other Reader could be here 
      is.setSystemId(PREFS_DTD_URI); 
      return is; 
     } 
     // else use the default behaviour 
     return null; 
    } 
} 
+0

parserFactory.setValidating (सही); लाइन एंड्रॉइड में पार्सर कॉन्फ़िगरेशन एक्ससेप्शन देता है और चेतावनी देता है कि सत्यापन का कोई कार्यान्वयन समर्थित नहीं है। यह जावा में काम करता है लेकिन एंड्रॉइड में नहीं। एंड्रॉइड में डीआईटी सत्यापन देने के लिए कोई और तरीका है? –

+0

@Mdroid, क्षमा करें, शायद मुझे "एंड्रॉइड" टैग याद आया है। सवाल यह नहीं बताता कि यह एंड्रॉइड मंच के बारे में है। क्या आपने समस्या हल की? –

+0

क्षमा करें मैंने प्रश्न में "एंड्रॉइड मंच" का उल्लेख नहीं किया है। और वर्तमान में मेरे पास इस पर और काम नहीं है। –

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