3 \X=ã@s¢dZddlTddlmZmZddlmZddlmZmZddlmZddlm Z m Z ddl Z e j dd …d krxe d dƒ‚[ ydd lmZWnek r¨e d dƒ‚YnXeedƒs¾e d dƒ‚ddlmZmZmZejZejZy ddlZWnek �rdd„ZYnXddlZejZ[[Gdd„dƒZGdd„dejƒZGdd„dejejƒZ dd„Z!e"dk�ržddl#Z$e!ƒZ%e%j&e$j'jj(ƒƒe%j)e$j'j*ƒƒe%j+dƒdS)z0.20é)Ú*)Úfeature_validationÚfeature_namespaces)Úfeature_namespace_prefixes)Úfeature_external_gesÚfeature_external_pes)Úfeature_string_interning)Úproperty_xml_stringÚproperty_interning_dictNéÚjavazexpat not available in Java)Úexpatzexpat not supportedÚ ParserCreate)Ú xmlreaderÚsaxutilsÚhandlercCs|S)N©)Úorrú+/usr/lib64/python3.6/xml/sax/expatreader.pyÚ_mkproxy'src@s eZdZdS)Ú _ClosedParserN)Ú__name__Ú __module__Ú __qualname__rrrrr.src@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) Ú ExpatLocatorcCst|ƒ|_dS)N)rÚ_ref)ÚselfÚparserrrrÚ__init__9szExpatLocator.__init__cCs|j}|jdkrdS|jjS)N)rÚ_parserÚErrorColumnNumber)rrrrrÚgetColumnNumber<s zExpatLocator.getColumnNumbercCs|j}|jdkrdS|jjS)Né)rrÚErrorLineNumber)rrrrrÚ getLineNumberBs zExpatLocator.getLineNumbercCs|j}|dkrdS|jjƒS)N)rÚ_sourceÚ getPublicId)rrrrrr&HszExpatLocator.getPublicIdcCs|j}|dkrdS|jjƒS)N)rr%Ú getSystemId)rrrrrr'NszExpatLocator.getSystemIdN)rrrrr!r$r&r'rrrrr3s rc@seZdZdFdd„Zdd„Zd d „Zd d „Zd d„Zdd„Zdd„Z dd„Z dGdd„Z dd„Z dd„Z dd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Zd=d>„Zd?d@„Z dAdB„Z!dCS)HÚ ExpatParserrééécCsFtjj||ƒtjƒ|_d|_||_d|_d|_g|_ d|_ d|_ dS)Nr) rÚIncrementalParserrZ InputSourcer%rÚ _namespacesÚ_lex_handler_propÚ_parsingÚ _entity_stackÚ _external_gesÚ _interning)rZnamespaceHandlingÚbufsizerrrrZs zExpatParser.__init__c CsVtj|ƒ}||_y*|jƒ|jjt|ƒƒtjj ||ƒWn|j ƒ‚YnXdS)N) rÚprepare_input_sourcer%ÚresetÚ _cont_handlerZsetDocumentLocatorrrr,ÚparseÚ _close_source)rÚsourcerrrr7gs zExpatParser.parsecCs |jƒdk r|jj|jƒƒdS)N)r'rZSetBase)rr9rrrÚ prepareParserws zExpatParser.prepareParsercCs tjj||ƒ|jr|jƒdS)N)rr,ÚsetContentHandlerr/Ú_reset_cont_handler)rrrrrr;}szExpatParser.setContentHandlercCsP|tkr|jS|tkr |jdk S|tttfkr2dS|tkr@|jSt d|ƒ‚dS)NrzFeature '%s' not recognized) rr-rr2rrrrr1ÚSAXNotRecognizedException)rÚnamerrrÚ getFeature‚s zExpatParser.getFeaturecCs¦|jrtdƒ‚|tkr||_n„|tkr.||_nt|tkrT|rL|jdkrRi|_q¢d|_nN|tkrj|r¢tdƒ‚n8|t kr€|r¢tdƒ‚n"|t kr–|r¢tdƒ‚n 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 prefixeszFeature '%s' not recognized) r/ÚSAXNotSupportedExceptionrr-rr1rr2rrrr=)rr>ÚstaterrrÚ setFeatureŽs2 zExpatParser.setFeaturecCsd|tjkr|jS|tkr|jS|tkrT|jrLt|jdƒrB|jjƒSt dƒ‚nt dƒ‚t d|ƒ‚dS)NÚGetInputContextz=This version of expat does not support getting the XML stringz.XML string cannot be returned when not parsingzProperty '%s' not recognized) rÚproperty_lexical_handlerr.r r2r rÚhasattrrCr=r@)rr>rrrÚ getProperty¬s   zExpatParser.getPropertycCsV|tjkr ||_|jrR|jƒn2|tkr0||_n"|tkrFtd|ƒ‚n t d|ƒ‚dS)NzProperty '%s' cannot be setzProperty '%s' not recognized) rrDr.r/Ú_reset_lex_handler_propr r2r r@r=)rr>ÚvaluerrrÚ setProperty¾s   zExpatParser.setPropertycCsz|js|jƒd|_|jjƒy|jj||ƒWnDtjk rt}z&ttj |j ƒ||ƒ}|j j |ƒWYdd}~XnXdS)Nr") r/r5r6Z startDocumentrZParser ÚerrorZSAXParseExceptionZ ErrorStringÚcodeZ _err_handlerZ fatalError)rÚdataÚisFinalÚeÚexcrrrÚfeedÎs zExpatParser.feedc CsB|j}z|jƒ}|dk r |jƒWd|jƒ}|dk r<|jƒXdS)N)r%ZgetCharacterStreamÚcloseZ getByteStream)rr9Úfilerrrr8ßs zExpatParser._close_sourcec Csˆ|js|jdkst|jtƒr dSz(|jddd�|jjƒd|_d|_Wdd|_|jdk rztƒ}|jj|_|jj |_ ||_|j ƒXdS)NÚr")rMr) r0rÚ isinstancerrPr6Z endDocumentr/r r#r8)rrrrrrQês      zExpatParser.closecCs|jj|j_|jj|j_dS)N)r6ÚprocessingInstructionrZProcessingInstructionHandlerÚ charactersZCharacterDataHandler)rrrrr<ÿs zExpatParser._reset_cont_handlercCs`|j}|j}|dkr4d|_d|_d|_d|_d|_n(|j|_|j|_|j |_|j |_|j |_dS)N) r.rZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerZcommentZ startCDATAZendCDATAÚstart_doctype_declZendDTD)rZlexrrrrrGsz#ExpatParser._reset_lex_handler_propc Csú|jr>tj|jjƒd|jd�|_d|j_|j|j_ |j |j_ n,tj|jjƒ|jd�|_|j |j_ |j |j_ |jƒ|j|j_|j|j_|j|j_|j|j_d|_|jr®|jƒ|j|j_y|j|j_Wntk rÚYnX|jjtj ƒd|_!g|_"dS)Nú )Úinternr"r)#r-r rr%Z getEncodingr2rZnamespace_prefixesÚstart_element_nsZStartElementHandlerÚend_element_nsZEndElementHandlerÚ start_elementÚ end_elementr<Úunparsed_entity_declZUnparsedEntityDeclHandlerÚ notation_declZNotationDeclHandlerÚstart_namespace_declZStartNamespaceDeclHandlerÚend_namespace_declZEndNamespaceDeclHandlerZ_decl_handler_propr.rGÚexternal_entity_refZExternalEntityRefHandlerÚskipped_entity_handlerZSkippedEntityHandlerÚAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr/r0)rrrrr5s6            zExpatParser.resetcCs|jdkrdS|jjS)N)rr )rrrrr!;s zExpatParser.getColumnNumbercCs|jdkrdS|jjS)Nr")rr#)rrrrr$@s zExpatParser.getLineNumbercCs |jjƒS)N)r%r&)rrrrr&EszExpatParser.getPublicIdcCs |jjƒS)N)r%r')rrrrr'HszExpatParser.getSystemIdcCs|jj|t|ƒƒdS)N)r6Z startElementÚAttributesImpl)rr>Úattrsrrrr\LszExpatParser.start_elementcCs|jj|ƒdS)N)r6Z endElement)rr>rrrr]OszExpatParser.end_elementc Csð|jƒ}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}i}i}xˆ|jƒD]|\}}|jƒ}t|ƒ} | dkr„|} d|f} n>| dkr²d|d|df} |d|df} n|d} t|ƒ} ||| <| || <qVW|jj|dt||ƒƒdS)Nr"érz%s:%sr))ÚsplitÚlenÚtupleÚitemsr6ZstartElementNSÚAttributesNSImpl) rr>rfÚpairZnewattrsZqnamesZanamerHÚpartsZlengthZqnameZapairrrrrZRs.      zExpatParser.start_element_nscCsV|jƒ}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}|jj|dƒdS)Nr"rgr)rhrirjr6Z endElementNS)rr>rmrrrr[ts   zExpatParser.end_element_nscCs|jj||ƒdS)N)r6rU)rÚtargetrLrrrÚprocessing_instruction€sz"ExpatParser.processing_instructioncCs|jj|ƒdS)N)r6rV)rrLrrrÚcharacter_data„szExpatParser.character_datacCs|jj||ƒdS)N)r6ZstartPrefixMapping)rÚprefixZurirrrr`‡sz ExpatParser.start_namespace_declcCs|jj|ƒdS)N)r6ZendPrefixMapping)rrrrrrraŠszExpatParser.end_namespace_declcCs|jj|||ƒdS)N)r.ZstartDTD)rr>ÚsysidÚpubidZhas_internal_subsetrrrrW�szExpatParser.start_doctype_declcCs|jj||||ƒdS)N)Ú _dtd_handlerZunparsedEntityDecl)rr>ÚbasersrtZ notation_namerrrr^�sz ExpatParser.unparsed_entity_declcCs|jj|||ƒdS)N)ruZ notationDecl)rr>rvrsrtrrrr_“szExpatParser.notation_declc Cs’|js dS|jj||ƒ}tj||jjƒp*dƒ}|jj|j |jfƒ|j j |ƒ|_ ||_yt j j ||ƒWn dS|jd\|_ |_|jd=dS)Nr"rSréÿÿÿÿrw)r1Z _ent_handlerZ resolveEntityrr4r%r'r0ÚappendrZExternalEntityParserCreaterr,r7)rÚcontextrvrsrtr9rrrrb–s  zExpatParser.external_entity_refcCs|r d|}|jj|ƒdS)Nú%)r6Z skippedEntity)rr>Zis_perrrrc¬sz"ExpatParser.skipped_entity_handlerNiéìÿ)rr{)r)"rrrrr7r:r;r?rBrFrIrPr8rQr<rGr5r!r$r&r'r\r]rZr[rprqr`rarWr^r_rbrcrrrrr(Ws>    '" r(cOs t||ŽS)N)r()ÚargsÚkwargsrrrÚ create_parser´sr~Ú__main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml),ÚversionZxml.sax._exceptionsZxml.sax.handlerrrrrrrr r ÚsysÚplatformZSAXReaderNotAvailableZ xml.parsersr Ú ImportErrorrEZxml.saxrrrrerlÚ_weakrefrÚweakrefÚproxyrZLocatorrr,r(r~rZxml.sax.saxutilsZxmlÚpr;ZsaxZ XMLGeneratorZsetErrorHandlerZ ErrorHandlerr7rrrrÚsL      $_