def _parseSOAP(xml_str, rules = None, ignore_ext=None,
forbid_entities=False, forbid_external=True, forbid_dtd=False):
inpsrc = xml.sax.xmlreader.InputSource()
inpsrc.setByteStream(StringIO(xml_str))
if ignore_ext is None:
ignore_ext = False
parser = make_parser()
t = SOAPParser(rules=rules)
parser.setContentHandler(t)
errorHandler = xml.sax.handler.ErrorHandler()
parser.setErrorHandler(errorHandler)
if ignore_ext:
# disable by default entity loading on posted content
forbid_dtd = True
forbid_entities = True
forbid_external = True
parser.forbid_dtd = forbid_dtd
parser.forbid_entities = forbid_entities
parser.forbid_external = forbid_external
parser.setEntityResolver(EmptyEntityResolver())
# turn on namespace mangeling
parser.setFeature(xml.sax.handler.feature_namespaces, 1)
try:
parser.parse(inpsrc)
except DefusedXmlException, e:
parser._parser = None
print traceback.format_exc()
raise e
except xml.sax.SAXParseException, e:
parser._parser = None
print traceback.format_exc()
raise e
return t
################################################################################
# SOAPParser's more public interface
################################################################################
评论列表
文章目录