a do=@sdZdZddlTddlmZmZddlmZddlmZmZddlm Z ddlm Z m Z dd l Z e j d d d kr|ed d [ zdd lmZWneyedd Yn0eedsedd ddlmZmZmZejZejZz dd lZWneyddZYn0dd lZejZ[[GdddZGdddejZGdddej ejZ!ddZ"e#dkrdd l$Z%e"Z&e&'e%j(j)e&*e%j(+e&,dd S)z] SAX driver for the pyexpat C module. This driver works with pyexpat.__version__ == '2.22'. z0.20)*)feature_validationfeature_namespaces)feature_namespace_prefixes)feature_external_gesfeature_external_pes)feature_string_interning)property_xml_stringproperty_interning_dictNjavazexpat not available in Java)expatzexpat not supported ParserCreate) xmlreadersaxutilshandlercCs|SN)orr+/usr/lib64/python3.9/xml/sax/expatreader.py_mkproxy'src@s eZdZdS) _ClosedParserN)__name__ __module__ __qualname__rrrrr.src@s8eZdZdZddZddZddZdd Zd d Zd S) ExpatLocatorzLocator for use with the ExpatParser class. This uses a weak reference to the parser object to avoid creating a circular reference between the parser and the content handler. cCst||_dSr)r_refselfparserrrr__init__9szExpatLocator.__init__cCs|j}|jdurdS|jjSr)r_parserErrorColumnNumberrrrrgetColumnNumber<s zExpatLocator.getColumnNumbercCs|j}|jdurdS|jjSN)rr!ErrorLineNumberrrrr getLineNumberBs zExpatLocator.getLineNumbercCs|j}|durdS|jSr)r_source getPublicIdrrrrr)HszExpatLocator.getPublicIdcCs|j}|durdS|jSr)rr( getSystemIdrrrrr*NszExpatLocator.getSystemIdN) rrr__doc__r r#r'r)r*rrrrr3s rc@s eZdZdZdDddZddZdd Zd d Zd d ZddZ ddZ ddZ dEddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Z d?d@Z!dAdBZ"dCS)F ExpatParserz$SAX driver for the pyexpat C module.rcCsFtj||t|_d|_||_d|_d|_g|_ d|_ d|_ dS)NFr) rIncrementalParserr InputSourcer(r! _namespaces_lex_handler_prop_parsing _entity_stack _external_ges _interning)rnamespaceHandlingbufsizerrrr Zs zExpatParser.__init__cCsVt|}||_z*||jt|tj ||Wn| Yn0dS)z3Parse an XML document from a URL or an InputSource.N) rprepare_input_sourcer(reset _cont_handlersetDocumentLocatorrrr.parse _close_sourcersourcerrrr<gs zExpatParser.parsecCs |dur|j|dSr)r*r!SetBaser>rrr prepareParserws zExpatParser.prepareParsercCs tj|||jr|dSr)rr.setContentHandlerr2_reset_cont_handler)rrrrrrB}szExpatParser.setContentHandlercCsP|tkr|jS|tkr |jduS|tttfvr2dS|tkr@|jSt d|dS)NrFeature '%s' not recognized) rr0rr5rrrrr4SAXNotRecognizedExceptionrnamerrr getFeatures zExpatParser.getFeaturecCs|jrtd|tkr||_n|tkr.||_nt|tkrT|rL|jdurRi|_qd|_nN|tkrj|rtdn8|t kr|rtdn"|t kr|rtdn t d|dS)Nz!Cannot set features while parsingz!expat does not support validationz/expat does not read external parameter entitiesz(expat does not report namespace prefixesrD) r2SAXNotSupportedExceptionrr0rr4rr5rrrrE)rrGstaterrr setFeatures: zExpatParser.setFeaturecCsd|tjkr|jS|tkr|jS|tkrT|jrLt|jdrB|jSt dnt dt d|dS)NGetInputContextz=This version of expat does not support getting the XML stringz.XML string cannot be returned when not parsingProperty '%s' not recognized) rproperty_lexical_handlerr1r r5r r!hasattrrLrErIrFrrr getPropertys   zExpatParser.getPropertycCsV|tjkr ||_|jrR|n2|tkr0||_n"|tkrFtd|n t d|dS)NzProperty '%s' cannot be setrM) rrNr1r2_reset_lex_handler_propr r5r rIrE)rrGvaluerrr setPropertys  zExpatParser.setPropertyFc Cs||js|d|_|jz|j||WnFtjyv}z,tt |j ||}|j |WYd}~n d}~00dS)NT) r2r9r: startDocumentr!Parser errorSAXParseException ErrorStringcode _err_handler fatalError)rdataisFinaleexcrrrfeeds zExpatParser.feedcCsZ|j}z4|}|dur |W|}|durV|n|}|durT|0dSr)r(getCharacterStreamclose getByteStream)rr?filerrrr=s  zExpatParser._close_sourcecCs|js|jdust|jtr dSz`|jddd|jd|_d|_Wd|_|jdurxt}|jj|_|jj |_ ||_| n:d|_|jdurt}|jj|_|jj |_ ||_| 0dS)NT)r]F) r3r! isinstancerr`r: endDocumentr2r"r&r=rrrrrbs.         zExpatParser.closecCs|jj|j_|jj|j_dSr)r:processingInstructionr!ProcessingInstructionHandler charactersCharacterDataHandlerrrrrrCszExpatParser._reset_cont_handlercCs`|j}|j}|dur4d|_d|_d|_d|_d|_n(|j|_|j|_|j |_|j |_|j |_dSr) r1r!CommentHandlerStartCdataSectionHandlerEndCdataSectionHandlerStartDoctypeDeclHandlerEndDoctypeDeclHandlercomment startCDATAendCDATAstart_doctype_declendDTD)rlexrrrrrQsz#ExpatParser._reset_lex_handler_propcCs|jr>tj|jd|jd|_d|j_|j|j_ |j |j_ n,tj|j|jd|_|j |j_ |j |j_ ||j|j_|j|j_|j|j_|j|j_d|_|jr||j|j_z|j|j_WntyYn0|jtj d|_!g|_"dS)N )internr%F)#r0r rr( getEncodingr5r!namespace_prefixesstart_element_nsStartElementHandlerend_element_nsEndElementHandler start_element end_elementrCunparsed_entity_declUnparsedEntityDeclHandler notation_declNotationDeclHandlerstart_namespace_declStartNamespaceDeclHandlerend_namespace_declEndNamespaceDeclHandler_decl_handler_propr1rQexternal_entity_refExternalEntityRefHandlerskipped_entity_handlerSkippedEntityHandlerAttributeErrorSetParamEntityParsing*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr2r3rlrrrr9s<           zExpatParser.resetcCs|jdurdS|jjSr)r!r"rlrrrr#;s zExpatParser.getColumnNumbercCs|jdurdS|jjSr$)r!r&rlrrrr'@s zExpatParser.getLineNumbercCs |jSr)r(r)rlrrrr)EszExpatParser.getPublicIdcCs |jSr)r(r*rlrrrr*HszExpatParser.getSystemIdcCs|j|t|dSr)r: startElementAttributesImpl)rrGattrsrrrrLszExpatParser.start_elementcCs|j|dSr)r: endElementrFrrrrOszExpatParser.end_elementc Cs|}t|dkrd|f}n&t|dkr<|d|df}nt|}i}i}|D]|\}}|}t|} | dkr|} d|f} n>| dkrd|d|df} |d|df} n|d} t|} ||| <| || <qT|j|dt||dS)Nr%rz%s:%s)splitlentupleitemsr:startElementNSAttributesNSImpl) rrGrpairnewattrsqnamesanamerRpartslengthqnameapairrrrr|Rs0      zExpatParser.start_element_nscCsV|}t|dkrd|f}n&t|dkr<|d|df}nt|}|j|ddS)Nr%rr)rrrr: endElementNS)rrGrrrrr~ts   zExpatParser.end_element_nscCs|j||dSr)r:rh)rtargetr\rrrprocessing_instructionsz"ExpatParser.processing_instructioncCs|j|dSr)r:rj)rr\rrrcharacter_dataszExpatParser.character_datacCs|j||dSr)r:startPrefixMapping)rprefixurirrrrsz ExpatParser.start_namespace_declcCs|j|dSr)r:endPrefixMapping)rrrrrrszExpatParser.end_namespace_declcCs|j|||dSr)r1startDTD)rrGsysidpubidhas_internal_subsetrrrruszExpatParser.start_doctype_declcCs|j||||dSr) _dtd_handlerunparsedEntityDecl)rrGbaserr notation_namerrrrsz ExpatParser.unparsed_entity_declcCs|j|||dSr)r notationDecl)rrGrrrrrrrszExpatParser.notation_declcCs|js dS|j||}t||jp*d}|j|j |jf|j ||_ ||_zt j ||WnYdS0|jd\|_ |_|jd=dS)Nr%r)r4 _ent_handler resolveEntityrr8r(r*r3appendr!ExternalEntityParserCreaterr.r<)rcontextrrrr?rrrrs" zExpatParser.external_entity_refcCs|r d|}|j|dS)N%)r: skippedEntity)rrGis_perrrrsz"ExpatParser.skipped_entity_handlerN)rr-)F)#rrrr+r r<rArBrHrKrPrSr`r=rbrCrQr9r#r'r)r*rrr|r~rrrrrurrrrrrrrr,Ws@    '" r,cOst|i|Sr)r,)argskwargsrrr create_parsersr__main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml)-r+versionxml.sax._exceptionsxml.sax.handlerrrrrrrr r sysplatformSAXReaderNotAvailable xml.parsersr ImportErrorrOxml.saxrrrrr_weakrefrweakrefproxyrLocatorrr.r,rrxml.sax.saxutilsxmlprBsax XMLGeneratorsetErrorHandler ErrorHandlerr<rrrrsN       $_