2012-12-14 12 views
6

के बीच अंतर दो स्निपेट के बीच क्या अंतर है, अगर मुझे एक्सएमएल को पार्स करना है?SAXParser और XMLReader

1.By का उपयोग कर SAXParser parse विधि:

SAXParserFactory sfactory = SAXParserFactory.newInstance(); 
SAXParser parser = sfactory.newSAXParser(); 
parser.parse(new File(filename), new DocHandler()); 

अब XMLReader के parse विधि और अधिक लचीलापन होने का बावजूद SAXParser

SAXParserFactory sfactory = SAXParserFactory.newInstance(); 
SAXParser parser = sfactory.newSAXParser(); 
XMLReader xmlparser = parser.getXMLReader(); 
xmlparser.setContentHandler(new DocHandler()); 
xmlparser.parse(new InputSource("test1.xml")); 

से प्राप्त का उपयोग कर, क्या कोई अन्य अंतर है?

उत्तर

8

parseSAXParser के तरीके सिर्फ XMLReader के आंतरिक उदाहरण में प्रतिनिधि हैं और आमतौर पर अधिक सुविधाजनक होते हैं। कुछ और उन्नत उपयोग के लिए आपको XMLReader का उपयोग करना होगा। कुछ उदाहरण होगा

  • अमानक सुविधाओं की स्थापना कार्यान्वयन के
  • रूप ContentHandler, EntityResolver या ErrorHandler
  • स्विचिंग संचालकों विभिन्न वर्गों की स्थापना करते हुए
0

http://docs.oracle.com/javase/1.5.0/docs/api/org/xml/sax/XMLReader.html। एक्सएमएल रीडर के लिए लिंक पर एक नज़र डालें और sax पार्सर के लिए निम्न लिंक देखें। http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/SAXParser.html

विभिन्न पार्सर का उपयोग करने पर निर्भर करता है कि आप अपने पार्सर को क्या करना चाहते हैं। यदि आप संशोधित करते हैं, एक्सएमएल में सामग्री को हटाते हैं तो आप डब्ल्यू 3 सी डोम पार्सर का उपयोग कर सकते हैं। यदि आप सिर्फ पार्स करना चाहते हैं और तत्व प्राप्त करना चाहते हैं तो आप SAX पार्सर का उपयोग कर सकते हैं। वहाँ कुछ बाहर हैं। तो यह वास्तव में आप जो चाहते हैं उस पर निर्भर करता है।

+0

क्षमा करें, लेकिन मैं पार्स करने डोम पार्सर के बारे में पता कर रहा हूँ । मैं सिर्फ यह जानना चाहता था कि क्यों सैक्सपार्स और एक्सएमएल रीडर दोनों 'पार्स' विधि प्रदान करते हैं। क्या कोई तकनीकी कारण है? – sakura

3

जैसा कि आपने देखा है कि XMLReader org.xml.sax से संबंधित है (जो http://www.saxproject.org/ से आता है) और SAXParser javax.xml.parsers से। SAXParser आंतरिक रूप से XMLReader का उपयोग करता है। आप XMLReader के साथ सीधे काम कर सकते हैं

XMLReader xr = XMLReaderFactory.createXMLReader(); 
xr.setContentHandler(handler); 
xr.setDTDHandler(handler); 
... 

लेकिन आप देखेंगे कि SAXParser उपयोग करने के लिए अधिक दृढ़ है। यही है, सुविधा के लिए SAXParser जोड़ा गया था।

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