# defusedxml | |
# | |
# Copyright (c) 2013 by Christian Heimes <[email protected]> | |
# 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() | |