# defusedxml # # Copyright (c) 2013 by Christian Heimes # Licensed to PSF under a Contributor Agreement. # See https://www.python.org/psf/license for licensing details. """Defused xml.sax """ from __future__ import print_function, absolute_import from xml.sax import InputSource as _InputSource from xml.sax import ErrorHandler as _ErrorHandler from . import expatreader __origin__ = "xml.sax" def parse( source, handler, errorHandler=_ErrorHandler(), forbid_dtd=False, forbid_entities=True, forbid_external=True, ): parser = make_parser() parser.setContentHandler(handler) parser.setErrorHandler(errorHandler) parser.forbid_dtd = forbid_dtd parser.forbid_entities = forbid_entities parser.forbid_external = forbid_external parser.parse(source) def parseString( string, handler, errorHandler=_ErrorHandler(), forbid_dtd=False, forbid_entities=True, forbid_external=True, ): from io import BytesIO if errorHandler is None: errorHandler = _ErrorHandler() parser = make_parser() parser.setContentHandler(handler) parser.setErrorHandler(errorHandler) parser.forbid_dtd = forbid_dtd parser.forbid_entities = forbid_entities parser.forbid_external = forbid_external inpsrc = _InputSource() inpsrc.setByteStream(BytesIO(string)) parser.parse(inpsrc) def make_parser(parser_list=[]): return expatreader.create_parser()