U e5dX=ã@s¢dZddlTddlmZmZddlmZddlmZmZddlmZddlm Z m Z ddl Z e j dd …d krxe d dƒ‚[ zdd lmZWnek r¨e d dƒ‚YnXeedƒs¾e d dƒ‚ddlmZmZmZejZejZz ddlZWnek �rdd„ZYnXddlZejZ[[Gdd„dƒZGdd„dejƒZGdd„dejejƒZ dd„Z!e"dk�ržddl#Z$e!ƒZ%e% &e$j'j (¡¡e% )e$j' *¡¡e% +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.8/xml/sax/expatreader.pyÚ_mkproxy'src@s eZdZdS)Ú _ClosedParserN)Ú__name__Ú __module__Ú __qualname__rrrrr.src@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) Ú ExpatLocatorcCst|ƒ|_dSr)rÚ_ref©ÚselfÚparserrrrÚ__init__9szExpatLocator.__init__cCs|j}|jdkrdS|jjSr)rÚ_parserÚErrorColumnNumberrrrrÚgetColumnNumber<s zExpatLocator.getColumnNumbercCs|j}|jdkrdS|jjS©Né)rr!ÚErrorLineNumberrrrrÚ getLineNumberBs zExpatLocator.getLineNumbercCs|j}|dkrdS|j ¡Sr)rÚ_sourceÚ getPublicIdrrrrr)HszExpatLocator.getPublicIdcCs|j}|dkrdS|j ¡Sr)rr(Ú getSystemIdrrrrr*NszExpatLocator.getSystemIdN)rrrr r#r'r)r*rrrrr3s rc@seZdZdBdd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dCdd„Z dd„Z dd„Z dd„Zdd„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>„Z d?d@„Z!dAS)DÚ ExpatParserréìÿcCsFtj ||¡t ¡|_d|_||_d|_d|_g|_ d|_ d|_ dS)Nr) rÚIncrementalParserr Z InputSourcer(r!Ú _namespacesÚ_lex_handler_propÚ_parsingÚ _entity_stackÚ _external_gesÚ _interning)rZnamespaceHandlingÚbufsizerrrr Zs zExpatParser.__init__cCsVt |¡}||_z*| ¡|j t|ƒ¡tj  ||¡Wn|  ¡‚YnXdSr) rÚprepare_input_sourcer(ÚresetÚ _cont_handlerZsetDocumentLocatorrrr-ÚparseÚ _close_source©rÚsourcerrrr8gs zExpatParser.parsecCs | ¡dk r|j | ¡¡dSr)r*r!ZSetBaser:rrrÚ prepareParserws zExpatParser.prepareParsercCs tj ||¡|jr| ¡dSr)rr-ÚsetContentHandlerr0Ú_reset_cont_handler)rrrrrr=}szExpatParser.setContentHandlercCsP|tkr|jS|tkr |jdk S|tttfkr2dS|tkr@|jSt d|ƒ‚dS)NrúFeature '%s' not recognized) rr.rr3rrrrr2Ú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 prefixesr?) r0ÚSAXNotSupportedExceptionrr.rr2rr3rrrr@)rrBÚstaterrrÚ setFeatureŽs: ÿÿÿÿzExpatParser.setFeaturecCsd|tjkr|jS|tkr|jS|tkrT|jrLt|jdƒrB|j ¡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 parsingúProperty '%s' not recognized) rÚproperty_lexical_handlerr/r r3r r!ÚhasattrrGr@rDrArrrÚ getProperty¬s   ÿÿzExpatParser.getPropertycCsV|tjkr ||_|jrR| ¡n2|tkr0||_n"|tkrFtd|ƒ‚n t d|ƒ‚dS)NzProperty '%s' cannot be setrH) rrIr/r0Ú_reset_lex_handler_propr r3r rDr@)rrBÚvaluerrrÚ setProperty¾s  ÿÿzExpatParser.setPropertyc Csz|js| ¡d|_|j ¡z|j ||¡WnDtjk rt}z$tt  |j ¡||ƒ}|j   |¡W5d}~XYnXdSr$) r0r6r7Z startDocumentr!ZParser ÚerrorZSAXParseExceptionZ ErrorStringÚcodeZ _err_handlerZ fatalError)rÚdataÚisFinalÚeÚexcrrrÚfeedÎs zExpatParser.feedcCsB|j}z| ¡}|dk r | ¡W5| ¡}|dk r<| ¡XdSr)r(Z getByteStreamÚcloseZgetCharacterStream)rr;Úfilerrrr9ßs zExpatParser._close_sourcecCsˆ|js|jdkst|jtƒr dSz(|jddd�|j   ¡d|_d|_W5d|_|jdk rztƒ}|jj|_|jj|_||_| ¡XdS)NrÚr%)rR) r1r!Ú isinstancerr0r"r&r9rUr7Z endDocumentrrrrrVês  ÿ     zExpatParser.closecCs|jj|j_|jj|j_dSr)r7ÚprocessingInstructionr!ZProcessingInstructionHandlerÚ charactersZCharacterDataHandler©rrrrr>ÿsÿzExpatParser._reset_cont_handlercCs`|j}|j}|dkr4d|_d|_d|_d|_d|_n(|j|_|j|_|j |_|j |_|j |_dSr) r/r!ZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerZcommentZ startCDATAZendCDATAÚstart_doctype_declZendDTD)rZlexrrrrrLsz#ExpatParser._reset_lex_handler_propcCsú|jr>tj|j ¡d|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_Wntk rÚYnX|j tj ¡d|_!g|_"dS)Nú )Úinternr%r)#r.r rr(Z getEncodingr3r!Znamespace_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/rLÚexternal_entity_refZExternalEntityRefHandlerÚskipped_entity_handlerZSkippedEntityHandlerÚAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr0r1r\rrrr6s<ÿ   ÿ       ÿzExpatParser.resetcCs|jdkrdS|jjSr)r!r"r\rrrr#;s zExpatParser.getColumnNumbercCs|jdkrdS|jjSr$)r!r&r\rrrr'@s zExpatParser.getLineNumbercCs |j ¡Sr)r(r)r\rrrr)EszExpatParser.getPublicIdcCs |j ¡Sr)r(r*r\rrrr*HszExpatParser.getSystemIdcCs|j |t|ƒ¡dSr)r7Z startElementÚAttributesImpl)rrBÚattrsrrrrbLszExpatParser.start_elementcCs|j |¡dSr)r7Z endElementrArrrrcOszExpatParser.end_elementc Csì| ¡}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}i}i}| ¡D]|\}}| ¡}t|ƒ} | dkr‚|} d|f} n>| dkr°d|d|df} |d|df} n|d} t|ƒ} ||| <| || <qT|j |dt||ƒ¡dS)Nr%érz%s:%sé)ÚsplitÚlenÚtupleÚitemsr7ZstartElementNSÚAttributesNSImpl) rrBrlÚpairZnewattrsZqnamesZanamerMÚpartsZlengthZqnameZapairrrrr`Rs0      ÿzExpatParser.start_element_nscCsV| ¡}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}|j |d¡dS)Nr%rmr)rorprqr7Z endElementNS)rrBrtrrrrats   zExpatParser.end_element_nscCs|j ||¡dSr)r7rZ)rÚtargetrQrrrÚprocessing_instruction€sz"ExpatParser.processing_instructioncCs|j |¡dSr)r7r[)rrQrrrÚcharacter_data„szExpatParser.character_datacCs|j ||¡dSr)r7ZstartPrefixMapping)rÚprefixZurirrrrf‡sz ExpatParser.start_namespace_declcCs|j |¡dSr)r7ZendPrefixMapping)rryrrrrgŠszExpatParser.end_namespace_declcCs|j |||¡dSr)r/ZstartDTD)rrBÚsysidÚpubidZhas_internal_subsetrrrr]�szExpatParser.start_doctype_declcCs|j ||||¡dSr)Ú _dtd_handlerZunparsedEntityDecl)rrBÚbaserzr{Z notation_namerrrrd�sz ExpatParser.unparsed_entity_declcCs|j |||¡dSr)r|Z notationDecl)rrBr}rzr{rrrre“szExpatParser.notation_declcCs–|js dS|j ||¡}t ||j ¡p*d¡}|j |j |jf¡|j   |¡|_ ||_zt j   ||¡WnYdSX|jd\|_ |_|jd=dS)Nr%rXréÿÿÿÿ)r2Z _ent_handlerZ resolveEntityrr5r(r*r1Úappendr!ZExternalEntityParserCreaterr-r8)rÚcontextr}rzr{r;rrrrh–s" þzExpatParser.external_entity_refcCs|r d|}|j |¡dS)Nú%)r7Z skippedEntity)rrBZis_perrrri¬sz"ExpatParser.skipped_entity_handlerN)rr,)r)"rrrr r8r<r=rCrFrKrNrUr9rVr>rLr6r#r'r)r*rbrcr`rarwrxrfrgr]rdrerhrirrrrr+Ws>    '" r+cOs t||ŽSr)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 Ú ImportErrorrJZxml.saxrrrrkrsÚ_weakrefrÚweakrefÚproxyrZLocatorrr-r+r„rZxml.sax.saxutilsZxmlÚpr=ZsaxZ XMLGeneratorZsetErrorHandlerZ ErrorHandlerr8rrrrÚsL      $_