Python 3.7

xml.sax.handler - SAX संचालकों के लिए आधार कक्षाएं




python

xml.sax.handler - SAX संचालकों के लिए आधार कक्षाएं

स्रोत कोड: Lib/xml/sax/handler.py

SAX API चार प्रकार के हैंडलर को परिभाषित करता है: कंटेंट हैंडलर, DTD हैंडलर, एरर हैंडलर और एंटिटी रिसॉल्वर। अनुप्रयोगों को आम तौर पर केवल उन इंटरफेस को लागू करने की आवश्यकता होती है जिनकी घटनाओं में वे रुचि रखते हैं; वे एक वस्तु या कई वस्तुओं में इंटरफेस को लागू कर सकते हैं। हैंडलर कार्यान्वयन को मॉड्यूल xml.sax.handler में दिए गए आधार वर्गों से विरासत में मिलना चाहिए, ताकि सभी तरीकों को डिफ़ॉल्ट कार्यान्वयन मिल सके।

class xml.sax.handler.ContentHandler

यह एसएएक्स में मुख्य कॉलबैक इंटरफ़ेस है, और अनुप्रयोगों के लिए सबसे महत्वपूर्ण है। इस इंटरफ़ेस में घटनाओं का क्रम दस्तावेज़ में जानकारी के क्रम को दर्शाता है।

class xml.sax.handler.DTDHandler

DTD ईवेंट्स को हैंडल करें।

यह इंटरफ़ेस केवल उन डीटीडी घटनाओं को निर्दिष्ट करता है जो बुनियादी पार्सिंग (अप्रकाशित संस्थाओं और विशेषताओं) के लिए आवश्यक हैं।

class xml.sax.handler.EntityResolver

संस्थाओं को हल करने के लिए बुनियादी इंटरफ़ेस। यदि आप इस इंटरफ़ेस को लागू करने वाली एक वस्तु बनाते हैं, तो अपने पार्सर के साथ ऑब्जेक्ट को पंजीकृत करें, बाहरी वस्तु को हल करने के लिए पार्सर आपके ऑब्जेक्ट में विधि को कॉल करेगा।

class xml.sax.handler.ErrorHandler

आवेदन करने के लिए त्रुटि और चेतावनी संदेश प्रस्तुत करने के लिए पार्सर द्वारा उपयोग किया जाने वाला इंटरफ़ेस। इस ऑब्जेक्ट के तरीके नियंत्रित करते हैं कि क्या त्रुटियों को तुरंत अपवाद में बदल दिया जाता है या किसी अन्य तरीके से नियंत्रित किया जाता है।

इन वर्गों के अलावा, xml.sax.handler सुविधा और संपत्ति के नाम के लिए प्रतीकात्मक स्थिरांक प्रदान करता है।

xml.sax.handler.feature_namespaces
xml.sax.handler.feature_namespace_prefixes
xml.sax.handler.feature_string_interning
xml.sax.handler.feature_validation
xml.sax.handler.feature_external_ges
xml.sax.handler.feature_external_pes
xml.sax.handler.all_features

सभी सुविधाओं की सूची।

xml.sax.handler.property_lexical_handler
xml.sax.handler.property_declaration_handler
xml.sax.handler.property_dom_node
xml.sax.handler.property_xml_string
xml.sax.handler.all_properties

सभी ज्ञात संपत्ति नामों की सूची।

ContentHandler ऑब्जेक्ट

उपयोगकर्ताओं से अपेक्षा की जाती है कि वे अपने आवेदन का समर्थन करने के लिए ContentHandler को ContentHandler करें। निम्नलिखित तरीकों को इनपुट दस्तावेज़ में उपयुक्त घटनाओं पर पार्सर द्वारा बुलाया जाता है:

ContentHandler.setDocumentLocator(locator)

दस्तावेज़ घटनाओं की उत्पत्ति का पता लगाने के लिए आवेदनकर्ता को लोकेटर देने के लिए पार्सर द्वारा बुलाया गया।

SAX पार्सर्स को लोकेटर की आपूर्ति के लिए दृढ़ता से (हालांकि पूरी तरह से आवश्यक नहीं) प्रोत्साहित किया जाता है: यदि ऐसा होता है, तो उसे डॉक्यूमेंटहैंडलर इंटरफेस में किसी भी अन्य तरीके को लागू करने से पहले इस विधि को लागू करके लोकेटर को आपूर्ति करना होगा।

लोकेटर एप्लिकेशन को किसी भी दस्तावेज़ से संबंधित घटना की अंतिम स्थिति निर्धारित करने की अनुमति देता है, भले ही पार्सर एक त्रुटि की रिपोर्ट नहीं कर रहा हो। आमतौर पर, एप्लिकेशन इस जानकारी का उपयोग अपनी त्रुटियों की रिपोर्ट करने के लिए करेगा (जैसे कि वर्ण सामग्री जो किसी एप्लिकेशन के व्यावसायिक नियमों से मेल नहीं खाती है)। खोज इंजन के उपयोग के लिए लोकेटर द्वारा दी गई जानकारी संभवतः पर्याप्त नहीं है।

ध्यान दें कि लोकेटर इस इंटरफ़ेस में घटनाओं के आह्वान के दौरान ही सही जानकारी लौटाएगा। एप्लिकेशन को किसी अन्य समय पर इसका उपयोग करने का प्रयास नहीं करना चाहिए।

ContentHandler.startDocument()

किसी दस्तावेज़ की शुरुआत की सूचना प्राप्त करें।

SAX पार्सर इस इंटरफ़ेस में या DTDHandler ( setDocumentLocator() को छोड़कर setDocumentLocator() में किसी भी अन्य तरीके से पहले केवल एक बार इस विधि को लागू करेगा।

ContentHandler.endDocument()

किसी दस्तावेज़ के अंत की सूचना प्राप्त करें।

SAX पार्सर केवल एक बार इस विधि को लागू करेगा, और यह पार्स के दौरान लागू अंतिम विधि होगी। पार्सर इस विधि को तब तक लागू नहीं करेगा जब तक कि उसने पार्सिंग (एक अपरिवर्तनीय त्रुटि के कारण) को छोड़ नहीं दिया या इनपुट के अंत तक नहीं पहुंच गया।

ContentHandler.startPrefixMapping(prefix, uri)

एक उपसर्ग-URI नामस्थान मैपिंग के दायरे को प्रारंभ करें।

सामान्य Namespace प्रसंस्करण के लिए इस घटना की जानकारी आवश्यक नहीं है: SAX XML रीडर स्वचालित रूप से तत्व और विशेषता नामों के लिए उपसर्गों को बदल देगा, जब feature_namespaces सुविधा सक्षम हो जाती है (डिफ़ॉल्ट)।

हालांकि, ऐसे मामले होते हैं, जब अनुप्रयोगों को चरित्र डेटा या विशेषता मूल्यों में उपसर्गों का उपयोग करने की आवश्यकता होती है, जहां वे सुरक्षित रूप से स्वचालित रूप से विस्तारित नहीं हो सकते हैं; startPrefixMapping() और endPrefixMapping() ईवेंट, आवश्यक होने पर उन संदर्भों में उपसर्गों का विस्तार करने के लिए एप्लिकेशन को जानकारी की आपूर्ति करते हैं।

ध्यान दें कि startPrefixMapping() और endPrefixMapping() ईवेंट एक-दूसरे के सापेक्ष ठीक से नेस्टेड होने की गारंटी नहीं है: सभी startPrefixMapping() ईवेंट संबंधित startElement() ईवेंट से पहले घटित होंगे, और सभी endPrefixMapping() इवेंट्स इसी endElement() बाद endElement() घटना, लेकिन उनके आदेश की गारंटी नहीं है।

ContentHandler.endPrefixMapping(prefix)

एक उपसर्ग-यूआरआई मानचित्रण का दायरा समाप्त करें।

विवरण के लिए startPrefixMapping() देखें। यह ईवेंट हमेशा समरूप endElement() ईवेंट के बाद होगा, लेकिन endElement() ईवेंट के आदेश की अन्यथा गारंटी नहीं है।

ContentHandler.startElement(name, attrs)

गैर-नामस्थान मोड में एक तत्व की शुरुआत का संकेत।

नाम पैरामीटर में स्ट्रिंग के रूप में तत्व प्रकार का कच्चा एक्सएमएल 1.0 नाम होता है और एट्र्स पैरामीटर तत्व की विशेषताओं से युक्त Attributes इंटरफ़ेस (देखें गुण इंटरफ़ेस ) की एक वस्तु रखता है। अट्र्स के रूप में पारित ऑब्जेक्ट को पार्सर द्वारा फिर से उपयोग किया जा सकता है; एक संदर्भ के लिए इसे रखने के लिए विशेषताओं की एक प्रति रखने के लिए एक विश्वसनीय तरीका नहीं है। विशेषताओं की एक प्रति रखने के लिए, अटार्स ऑब्जेक्ट की copy() विधि का उपयोग करें।

ContentHandler.endElement(name)

गैर-नामस्थान मोड में एक तत्व के अंत सिग्नल।

नाम पैरामीटर में तत्व प्रकार का नाम शामिल है, जैसे कि startElement() ईवेंट के साथ।

ContentHandler.startElementNS(name, qname, attrs)

नामस्थान मोड में एक तत्व की शुरुआत का संकेत।

नाम पैरामीटर में तत्व प्रकार का नाम होता है (uri, localname) टपल के रूप में (uri, localname) पैरामीटर में स्रोत दस्तावेज़ में उपयोग किया गया कच्चा XML 1.0 नाम होता है, और अट्र्स पैरामीटर AttributesNS इंटरफ़ेस का एक उदाहरण रखता है ( AttributesNS Interface देखें) ) तत्व की विशेषताओं से युक्त। यदि कोई नामस्थान तत्व से जुड़ा नहीं है, तो नाम का uri घटक None होगा। अट्र्स के रूप में पारित ऑब्जेक्ट को पार्सर द्वारा फिर से उपयोग किया जा सकता है; एक संदर्भ के लिए इसे रखने के लिए विशेषताओं की एक प्रति रखने के लिए एक विश्वसनीय तरीका नहीं है। विशेषताओं की एक प्रति रखने के लिए, अटार्स ऑब्जेक्ट की copy() विधि का उपयोग करें।

जब तक feature_namespace_prefixes सुविधा सक्रिय None , तब तक feature_namespace_prefixes पैरामीटर को None सेट None कर सकता है।

ContentHandler.endElementNS(name, qname)

नामस्थान मोड में एक तत्व के अंत सिग्नल।

नाम पैरामीटर में तत्व प्रकार का नाम है, जैसे कि startElementNS() विधि के साथ, वैसे ही startElementNS() पैरामीटर।

ContentHandler.characters(content)

चरित्र डेटा की सूचना प्राप्त करें।

पार्सर वर्ण डेटा के प्रत्येक भाग की रिपोर्ट करने के लिए इस विधि को कॉल करेगा। SAX पार्सर्स एक ही चंक में सभी सन्निहित चरित्र डेटा वापस कर सकते हैं, या वे इसे कई विखंडू में विभाजित कर सकते हैं; हालाँकि, किसी भी एकल ईवेंट के सभी पात्र एक ही बाहरी संस्था से आने चाहिए ताकि लोकेटर उपयोगी जानकारी प्रदान करे।

सामग्री एक स्ट्रिंग या बाइट्स उदाहरण हो सकती है; expat रीडर मॉड्यूल हमेशा स्ट्रिंग्स का उत्पादन करता है।

ध्यान दें

पायथन XML स्पेशल इंटरेस्ट ग्रुप द्वारा प्रदान किए गए पहले SAX 1 इंटरफ़ेस ने इस पद्धति के लिए अधिक जावा-जैसे इंटरफ़ेस का उपयोग किया था। चूंकि पायथन से उपयोग किए जाने वाले अधिकांश पार्सर पुराने इंटरफ़ेस का लाभ नहीं लेते थे, इसलिए इसे बदलने के लिए सरल हस्ताक्षर चुना गया था। पुराने कोड को नए इंटरफ़ेस में बदलने के लिए, पुराने ऑफसेट और लंबाई मापदंडों के साथ सामग्री को स्लाइस करने के बजाय सामग्री का उपयोग करें।

ContentHandler.ignorableWhitespace(whitespace)

तत्व सामग्री में आग्नेय व्हाट्सएप की सूचना प्राप्त करें।

पार्स करने वाले पार्सर्स को इस विधि का उपयोग करना चाहिए ताकि वे आग्नेय व्हाट्सएप के प्रत्येक भाग को रिपोर्ट कर सकें (W3C XML 1.0 सिफारिश, अनुभाग 2.10 देखें): गैर-मान्य पार्सर भी इस विधि का उपयोग कर सकते हैं यदि वे सामग्री मॉडल को रोकने और उपयोग करने में सक्षम हैं।

SAX पार्सर्स एक ही चंक में सभी सन्निहित व्हाट्सएप को वापस कर सकते हैं, या वे इसे कई विखंडों में विभाजित कर सकते हैं; हालाँकि, किसी भी एकल ईवेंट में सभी वर्ण एक ही बाहरी निकाय से आने चाहिए, ताकि लोकेटर उपयोगी जानकारी प्रदान करे।

ContentHandler.processingInstruction(target, data)

एक प्रसंस्करण निर्देश की सूचना प्राप्त करें।

पार्सर प्रत्येक प्रसंस्करण निर्देश के लिए एक बार इस विधि को लागू करेगा: ध्यान दें कि प्रसंस्करण निर्देश मुख्य दस्तावेज़ तत्व से पहले या बाद में हो सकते हैं।

SAX पार्सर को इस विधि का उपयोग करके कभी भी XML घोषणा (XML 1.0, अनुभाग 2.8) या पाठ घोषणा (XML 1.0, खंड 4.3.1) की सूचना नहीं देनी चाहिए।

ContentHandler.skippedEntity(name)

स्किप की गई इकाई की सूचना प्राप्त करें।

पार्सर प्रत्येक इकाई को छोड़ देने के बाद एक बार इस विधि को लागू करेगा। गैर-वैध प्रोसेसर, संस्थाओं को छोड़ सकते हैं यदि उन्होंने घोषणाओं को नहीं देखा है (क्योंकि, उदाहरण के लिए, इकाई को बाहरी डीटीडी उपसमुच्चय में घोषित किया गया था)। सभी प्रोसेसर बाहरी संस्थाओं को छोड़ सकते हैं, जो कि feature_external_ges और feature_external_pes गुणों पर निर्भर करता है।

DTDHandler ऑब्जेक्ट्स

DTDHandler उदाहरण निम्नलिखित तरीके प्रदान करते हैं:

DTDHandler.notationDecl(name, publicId, systemId)

एक संकेतन घोषणा घटना को संभालें।

DTDHandler.unparsedEntityDecl(name, publicId, systemId, ndata)

एक अप्रकाशित इकाई घोषणा घटना को संभालें।

EntityResolver ऑब्जेक्ट

EntityResolver.resolveEntity(publicId, systemId)

एक इकाई के सिस्टम पहचानकर्ता को हल करें और स्ट्रिंग के रूप में पढ़ने के लिए सिस्टम पहचानकर्ता को वापस लौटाएं, या एक इनपुट स्रोत से पढ़ें। डिफ़ॉल्ट कार्यान्वयन systemId देता है।

एररहैंडलर ऑब्जेक्ट्स

इस इंटरफ़ेस वाली वस्तुओं का उपयोग XMLReader से त्रुटि और चेतावनी की जानकारी प्राप्त करने के लिए किया जाता है। यदि आप एक ऑब्जेक्ट बनाते हैं जो इस इंटरफ़ेस को लागू करता है, तो ऑब्जेक्ट को अपने XMLReader साथ पंजीकृत करें, पार्सर सभी चेतावनियों और त्रुटियों की रिपोर्ट करने के लिए आपके ऑब्जेक्ट में विधियों को कॉल करेगा। त्रुटियों के तीन स्तर उपलब्ध हैं: चेतावनियाँ, (संभवतः) पुनर्प्राप्त करने योग्य त्रुटियां, और अपरिवर्तनीय त्रुटियां। सभी विधियाँ SAXParseException को एकमात्र पैरामीटर के रूप में लेती हैं। त्रुटियों और चेतावनियों को उत्तीर्ण अपवाद वस्तु को उठाकर एक अपवाद में परिवर्तित किया जा सकता है।

ErrorHandler.error(exception)

जब पार्सर एक वसूली योग्य त्रुटि का सामना करता है तो कॉल किया जाता है। यदि यह विधि अपवाद नहीं उठाती है, तो पार्सिंग जारी रह सकती है, लेकिन आगे के दस्तावेज़ की जानकारी आवेदन द्वारा अपेक्षित नहीं होनी चाहिए। जारी रखने के लिए पार्सर की अनुमति देने से इनपुट दस्तावेज़ में अतिरिक्त त्रुटियों की खोज की जा सकती है।

ErrorHandler.fatalError(exception)

जब पार्सर एक त्रुटि का सामना करता है, तो इससे उबर नहीं सकता; इस विधि के वापस आने पर पार्सिंग को समाप्त करने की उम्मीद की जाती है।

ErrorHandler.warning(exception)

जब पार्सर आवेदन के लिए मामूली चेतावनी जानकारी प्रस्तुत करता है। इस पद्धति के वापस आने पर पार्सिंग जारी रहने की उम्मीद है, और दस्तावेज़ की जानकारी आवेदन को पारित की जाएगी। इस विधि में एक अपवाद बढ़ाने से पार्सिंग समाप्त हो जाएगी।