You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
2 years ago
|
# defusedxml
|
||
|
#
|
||
|
# Copyright (c) 2013 by Christian Heimes <christian@python.org>
|
||
|
# 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()
|