codekingpro/portable-devtools
114k
1# defusedxml2#3# Copyright (c) 2013 by Christian Heimes <christian@python.org>4# Licensed to PSF under a Contributor Agreement.5# See https://www.python.org/psf/license for licensing details.6"""Defused xml.sax7"""8from __future__ import print_function, absolute_import9 10from xml.sax import InputSource as _InputSource11from xml.sax import ErrorHandler as _ErrorHandler12 13from . import expatreader14 15__origin__ = "xml.sax"16 17 18def parse(19 source,20 handler,21 errorHandler=_ErrorHandler(),22 forbid_dtd=False,23 forbid_entities=True,24 forbid_external=True,25):26 parser = make_parser()27 parser.setContentHandler(handler)28 parser.setErrorHandler(errorHandler)29 parser.forbid_dtd = forbid_dtd30 parser.forbid_entities = forbid_entities31 parser.forbid_external = forbid_external32 parser.parse(source)33 34 35def parseString(36 string,37 handler,38 errorHandler=_ErrorHandler(),39 forbid_dtd=False,40 forbid_entities=True,41 forbid_external=True,42):43 from io import BytesIO44 45 if errorHandler is None:46 errorHandler = _ErrorHandler()47 parser = make_parser()48 parser.setContentHandler(handler)49 parser.setErrorHandler(errorHandler)50 parser.forbid_dtd = forbid_dtd51 parser.forbid_entities = forbid_entities52 parser.forbid_external = forbid_external53 54 inpsrc = _InputSource()55 inpsrc.setByteStream(BytesIO(string))56 parser.parse(inpsrc)57 58 59def make_parser(parser_list=[]):60 return expatreader.create_parser()61 