xml.sax --- پشتیبانی از پارسرهای SAX2¶
کد منبع: Lib/xml/sax/__init__.py
بستهی xml.sax تعدادی ماژول فراهم میکند که رابط Simple API for XML (SAX) را برای پایتون پیادهسازی میکنند. خود بسته، استثناهای SAX و توابع تسهیلکنندهای را فراهم میکند که کاربران API SAX بیشترین استفاده را از آنها خواهند داشت.
توجه
اگر لازم است دادههای غیرقابلاعتماد یا احراز هویتنشده را تجزیه کنید، امنیت XML را ببینید.
تغییر یافته در نسخهی 3.7.1: پارسر SAX برای افزایش امنیت، دیگر بهطور پیشفرض موجودیتهای خارجی عمومی را پردازش نمیکند. پیش از این، پارسر برای DTD و موجودیتها اتصالهای شبکه ایجاد میکرد تا پروندههای دوردست را واکشی کند یا پروندههای محلی را از سامانه فایلبندی بارگذاری کند. این قابلیت را میتوان دوباره با متد setFeature() بر روی شیء پارسر و آرگومان feature_external_ges فعال کرد.
The convenience functions and data are:
- xml.sax.make_parser(parser_list=())¶
یک شیء SAX از کلاس
XMLReaderایجاد و بازگشت میدهد. اولین پارسر یافتشده استفاده خواهد شد. اگر parser_list ارائه شود، باید یک پیمایشپذیر از رشتهها باشد که نام ماژولهای دارای تابعی به نامcreate_parser()را مشخص میکنند. ماژولهای فهرستشده در parser_list پیش از ماژولهای موجود در فهرست پیشفرض پارسرها استفاده خواهند شد.تغییر یافته در نسخهی 3.8: آرگومان parser_list میتواند هر پیمایشپذیری باشد، نه فقط یک فهرست.
- xml.sax.parse(filename_or_stream, handler, errorHandler=handler.ErrorHandler())¶
Create a SAX parser and use it to parse a document. The document, passed in as filename_or_stream, can be a system identifier (a string identifying the input source -- typically a file name or a URL), a path-like object, or a file object. A system identifier which does not refer to an existing file is opened with
urllib.request.urlopen(). The handler parameter needs to be a SAXContentHandlerinstance. If errorHandler is given, it must be a SAXErrorHandlerinstance; if omitted,SAXParseExceptionwill be raised on all errors. There is no return value; all work must be done by the handler passed in.
- xml.sax.parseString(string, handler, errorHandler=handler.ErrorHandler())¶
مشابه
parse()است، اما از یک بافر string که بهعنوان پارامتر دریافت شده است، تجزیه میکند. string باید نمونهای ازstrیا یک bytes-like object باشد.تغییر یافته در نسخهی 3.5: پشتیبانی از نمونههای
strافزوده شد.
- xml.sax.default_parser_list¶
The list of the names of modules which are tried by
make_parser()after the modules named in its parser_list argument. It contains'xml.sax.expatreader', or, if thePY_SAX_PARSERenvironment variable is set and the environment is not ignored, the comma-separated list of module names taken from it.
یک برنامه SAX معمول از سه نوع شیء استفاده میکند: خوانندهها، هندلرها و منابع ورودی. «خواننده» در این زمینه اصطلاح دیگری برای پارسر است، یعنی قطعهکدی که بایتها یا نویسهها را از منبع ورودی میخواند و دنبالهای از رویدادها را تولید میکند. سپس رویدادها به اشیاء هندلر توزیع میشوند، یعنی خواننده متدی را روی هندلر فراخوانی میکند. بنابراین یک برنامه SAX باید یک شیء خواننده به دست آورد، منابع ورودی را ایجاد یا باز کند، هندلرها را ایجاد کند و این اشیاء را به یکدیگر متصل کند. بهعنوان آخرین مرحله آمادهسازی، خواننده برای تجزیه ورودی فراخوانی میشود. در حین تجزیه، متدهای اشیاء هندلر بر اساس رویدادهای ساختاری و نحوی دادههای ورودی فراخوانی میشوند.
برای این اشیاء، تنها رابطها اهمیت دارند؛ آنها معمولاً توسط خود برنامه نمونهسازی نمیشوند. از آنجا که پایتون مفهوم صریحی از رابط ندارد، آنها بهطور رسمی بهعنوان کلاس معرفی شدهاند، اما برنامهها میتوانند از پیادهسازیهایی استفاده کنند که از کلاسهای ارائهشده ارثبری نمیکنند. رابطهای InputSource، Locator، Attributes، AttributesNS و XMLReader در ماژول xml.sax.xmlreader تعریف شدهاند. رابطهای هندلر در xml.sax.handler تعریف شدهاند. برای سهولت، InputSource (که اغلب مستقیماً نمونهسازی میشود) و کلاسهای هندلر نیز از xml.sax در دسترس هستند. این رابطها در ادامه شرح داده شدهاند.
علاوه بر این کلاسها، xml.sax کلاسهای استثنای زیر را فراهم میکند.
- exception xml.sax.SAXException(msg, exception=None)¶
خطا یا هشدار XML را کپسوله میکند. این کلاس میتواند شامل اطلاعات اولیهی خطا یا هشدار از پارسرٔ XML یا از برنامه باشد: میتوان از آن زیرکلاس ساخت تا قابلیتهای اضافی فراهم شود یا محلیسازی افزوده شود. توجه داشته باشید که اگرچه هندلرهای تعریفشده در رابط
ErrorHandlerنمونههایی از این استثنا را دریافت میکنند، لازم نیست که واقعاً این استثنا پرتاب شود --- این استثنا بهعنوان ظرفی برای اطلاعات نیز مفید است.هنگام نمونهسازی، msg باید توضیحی قابلفهم برای انسان از خطا باشد. پارامتر اختیاری exception، در صورت ارائه شدن، باید
Noneیا استثنایی باشد که توسط کد تجزیه گرفته شده و بهعنوان اطلاعات منتقل میشود.این کلاس پایه برای سایر کلاسهای استثنای SAX است.
- exception xml.sax.SAXParseException(msg, exception, locator)¶
زیرکلاسی از
SAXExceptionکه در خطاهای تجزیه پرتاب میشود. نمونههای این کلاس به متدهای رابط SAXErrorHandlerارسال میشوند تا اطلاعاتی را درباره خطای تجزیه ارائه دهند. این کلاس از رابط SAXLocatorو همچنین رابطSAXExceptionپشتیبانی میکند.
- exception xml.sax.SAXNotRecognizedException(msg, exception=None)¶
زیرکلاسی از
SAXExceptionکه زمانی پرتاب میشود که یکXMLReaderSAX با یک ویژگی یا خصوصیت شناختهنشده مواجه شود. برنامهها و افزونههای SAX میتوانند از این کلاس برای اهداف مشابه استفاده کنند.
- exception xml.sax.SAXNotSupportedException(msg, exception=None)¶
زیرکلاسی از
SAXExceptionکه هنگامی پرتاب میشود که از یکXMLReaderSAX خواسته شود قابلیتی را که پشتیبانی نمیشود فعال کند، یا ویژگیای را روی مقداری تنظیم کند که پیادهسازی از آن پشتیبانی نمیکند. برنامهها و افزونههای SAX میتوانند از این کلاس برای اهداف مشابه استفاده کنند.
- exception xml.sax.SAXReaderNotAvailable(msg, exception=None)¶
Subclass of
SAXNotSupportedExceptionraised when no parser is available. A parser module raises it when it is imported or during parsing if the parser it provides cannot be used, andmake_parser()raises it if no module from the tried ones provides a usable parser.
همچنین ملاحظه نمائید
- SAX: API ساده برای XML
این وبسایت نقطه کانونی برای تعریف SAX API است. این وبسایت یک پیادهسازی جاوا و مستندات برخط ارائه میکند. پیوندهایی به پیادهسازیها و اطلاعات تاریخی نیز در دسترس هستند.
- ماژول
xml.sax.handler تعریف رابطها برای اشیاء ارائهشده توسط برنامه.
- ماژول
xml.sax.saxutils توابع کمکی برای استفاده در برنامههای SAX.
- ماژول
xml.sax.xmlreader تعاریف رابطها برای اشیاء ارائهشده توسط پارسر.
اشیای SAXException¶
کلاس استثنای SAXException از متدهای زیر پشتیبانی میکند:
- SAXException.getMessage()¶
یک پیام قابلخواندن برای انسان برمیگرداند که شرایط خطا را توصیف میکند.
- SAXException.getException()¶
یک شیء استثنای کپسولهشده یا
Noneرا برمیگرداند.