def initialize_validator(path: Path, version: str): try: __tracebackhide__ = True if version == "1.1": return xmlschema.XMLSchema11(str(path)) else: return xmlschema.XMLSchema10(str(path)) except Exception: return None
import xmlschema from pprint import pprint schema = xmlschema.XMLSchema10( '/home/lpsthind/Public/python_web_dev/09_other/08_react_js/taxapp/frontend/src/pyapi/ITR-4/master.xsd' ) pprint(dict(schema.types)) # print(schema.elements['StateCode']) # print(schema.elements['StateCode'].occurs) # pprint(dict(schema.elements)) # pprint(sorted(schema.maps.types.keys())[:5]) # print(schema.elements['AddressDetail']) print(schema.types['AddressDetail80G']) # pprint(schema.findall('AddressDetail/*')) # print(schema.attributes)
REQUEST_XML_FILE = os.path.join(PROJECT_DIR, 'data/authn_request.xml') RESPONSE_XML_FILE = os.path.join(PROJECT_DIR, 'data/simple_saml_php.xml') METADATA_XML_FILE = os.path.join(PROJECT_DIR, 'data/testshib-providers.xml') def run_timeit(stmt='pass', setup='pass', number=10, compare=None): seconds = timeit(stmt, setup=setup, number=number) if compare is None: print("{}: {}s".format(stmt, seconds)) else: print("{}: {}s ({:g}x)".format(stmt, seconds, seconds / compare)) return seconds saml2_schema = xmlschema.XMLSchema10(SAML2_XSD_FILE) saml2_metadata_schema = xmlschema.XMLSchema10(SAML2_METADATA_XSD_FILE) saml2_lxml_schema = etree.XMLSchema(etree.parse(SAML2_XSD_FILE).getroot()) saml2_metadata_lxml_schema = etree.XMLSchema(etree.parse(SAML2_METADATA_XSD_FILE).getroot()) print("### Performance test SAML2 XML data validation ###\n") def xmlschema_validate_request(): saml2_schema.validate(REQUEST_XML_FILE) def xmlschema_validate_response(): # data/simple_saml_php.xml has 2 invalid base64 values:
def xmlschema_build_saml2_metadata_schema(): xs = xmlschema.XMLSchema10(SAML2_METADATA_XSD_FILE) return xs
def xmlschema_build_saml2_schema(): xs = xmlschema.XMLSchema10(SAML2_XSD_FILE) return xs
t1 = [ run_timeit("lxml_build_saml2_schema()", setup=SETUP, number=NUMBER), run_timeit("lxml_build_saml2_metadata_schema()", setup=SETUP, number=NUMBER) ] print() run_timeit("xmlschema_build_saml2_schema_and_meta_schema()", setup=SETUP, number=NUMBER, compare=t1[0]) saml2_schema = pickle.dumps(xmlschema.XMLSchema10(SAML2_XSD_FILE)) saml2_metadata_schema = pickle.dumps( xmlschema.XMLSchema10(SAML2_METADATA_XSD_FILE)) t2 = [ run_timeit("xmlschema_build_saml2_schema()", setup=SETUP, number=NUMBER, compare=t1[0]), run_timeit("xmlschema_build_saml2_metadata_schema()", setup=SETUP, number=NUMBER, compare=t1[1]) ] t3 = [