B × ‰àœ©Úã@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"dkrž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ú6/opt/alt/python37/lib/python3.7/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|j ¡S)N)rÚ_sourceÚ getPublicId)rrrrrr&HszExpatLocator.getPublicIdcCs|j}|dkrdS|j ¡S)N)rr%Ú getSystemId)rrrrrr'NszExpatLocator.getSystemIdN)rrrrr!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ÚIncrementalParserrZ InputSourcer%rÚ _namespacesÚ_lex_handler_propÚ_parsingÚ _entity_stackÚ _external_gesÚ _interning)rZnamespaceHandlingÚbufsizerrrrZs zExpatParser.__init__cCsVt |¡}||_y*| ¡|j t|ƒ¡tj  ||¡Wn|  ¡‚YnXdS)N) rÚprepare_input_sourcer%ÚresetÚ _cont_handlerZsetDocumentLocatorrrr*ÚparseÚ _close_source)rÚsourcerrrr5gs zExpatParser.parsecCs | ¡dk r|j | ¡¡dS)N)r'rZSetBase)rr7rrrÚ prepareParserws zExpatParser.prepareParsercCs tj ||¡|jr| ¡dS)N)rr*ÚsetContentHandlerr-Ú_reset_cont_handler)rrrrrr9}szExpatParser.setContentHandlercCsP|tkr|jS|tkr |jdk S|tttfkr2dS|tkr@|jSt d|ƒ‚dS)NrzFeature '%s' not recognized) rr+rr0rrrrr/Ú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+rr/rr0rrrr;)rr<ÚstaterrrÚ setFeatureŽs2 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 parsingzProperty '%s' not recognized) rÚproperty_lexical_handlerr,r r0r rÚhasattrrAr;r>)rr<rrrÚ getProperty¬s   zExpatParser.getPropertycCsV|tjkr ||_|jrR| ¡n2|tkr0||_n"|tkrFtd|ƒ‚n t d|ƒ‚dS)NzProperty '%s' cannot be setzProperty '%s' not recognized) rrBr,r-Ú_reset_lex_handler_propr r0r r>r;)rr<ÚvaluerrrÚ setProperty¾s   zExpatParser.setPropertyc Csz|js| ¡d|_|j ¡y|j ||¡WnDtjk rt}z$tt  |j ¡||ƒ}|j   |¡Wdd}~XYnXdS)Nr") r-r3r4Z startDocumentrZParser ÚerrorZSAXParseExceptionZ ErrorStringÚcodeZ _err_handlerZ fatalError)rÚdataÚisFinalÚeÚexcrrrÚfeedÎs zExpatParser.feedcCsB|j}z| ¡}|dk r | ¡Wd| ¡}|dk r<| ¡XdS)N)r%ZgetCharacterStreamÚcloseZ getByteStream)rr7Úfilerrrr6ßs zExpatParser._close_sourcecCsˆ|js|jdkst|jtƒr dSz(|jddd|j ¡d|_d|_Wdd|_|jdk rztƒ}|jj|_|jj |_ ||_|  ¡XdS)NÚr")rKr) r.rÚ isinstancerrNr4Z endDocumentr-r r#r6)rrrrrrOês      zExpatParser.closecCs|jj|j_|jj|j_dS)N)r4ÚprocessingInstructionrZProcessingInstructionHandlerÚ charactersZCharacterDataHandler)rrrrr:ÿs zExpatParser._reset_cont_handlercCs`|j}|j}|dkr4d|_d|_d|_d|_d|_n(|j|_|j|_|j |_|j |_|j |_dS)N) r,rZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerÚcommentZ startCDATAZendCDATAÚstart_doctype_declZendDTD)rZlexrrrrrEsz#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_y|j|j_Wntk rÚYnX|j tj ¡d|_!g|_"dS)Nú )Úinternr"r)#r+r rr%Z getEncodingr0rZnamespace_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,rEÚexternal_entity_refZExternalEntityRefHandlerÚskipped_entity_handlerZSkippedEntityHandlerÚAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr-r.)rrrrr3s6            zExpatParser.resetcCs|jdkrdS|jjS)N)rr )rrrrr!;s zExpatParser.getColumnNumbercCs|jdkrdS|jjS)Nr")rr#)rrrrr$@s zExpatParser.getLineNumbercCs |j ¡S)N)r%r&)rrrrr&EszExpatParser.getPublicIdcCs |j ¡S)N)r%r')rrrrr'HszExpatParser.getSystemIdcCs|j |t|ƒ¡dS)N)r4Z startElementÚAttributesImpl)rr<Úattrsrrrr[LszExpatParser.start_elementcCs|j |¡dS)N)r4Z endElement)rr<rrrr\OszExpatParser.end_elementc Csð| ¡}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}i}i}xˆ| ¡D]|\}}| ¡}t|ƒ} | dkr„|} d|f} n>| dkr²d|d|df} |d|df} n|d} t|ƒ} ||| <| || <qVW|j |dt||ƒ¡dS)Nr"érz%s:%sé)ÚsplitÚlenÚtupleÚitemsr4ZstartElementNSÚAttributesNSImpl) rr<reÚpairZnewattrsZqnamesZanamerFÚpartsÚlengthZqnameZapairrrrrYRs.      zExpatParser.start_element_nscCsV| ¡}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}|j |d¡dS)Nr"rfr)rhrirjr4Z endElementNS)rr<rmrrrrZts   zExpatParser.end_element_nscCs|j ||¡dS)N)r4rS)rÚtargetrJrrrÚprocessing_instruction€sz"ExpatParser.processing_instructioncCs|j |¡dS)N)r4rT)rrJrrrÚcharacter_data„szExpatParser.character_datacCs|j ||¡dS)N)r4ZstartPrefixMapping)rÚprefixZurirrrr_‡sz ExpatParser.start_namespace_declcCs|j |¡dS)N)r4ZendPrefixMapping)rrsrrrr`ŠszExpatParser.end_namespace_declcCs|j |||¡dS)N)r,ZstartDTD)rr<ÚsysidÚpubidZhas_internal_subsetrrrrVszExpatParser.start_doctype_declcCs|j ||||¡dS)N)Ú _dtd_handlerZunparsedEntityDecl)rr<ÚbasertruZ notation_namerrrr]sz ExpatParser.unparsed_entity_declcCs|j |||¡dS)N)rvZ notationDecl)rr<rwrtrurrrr^“szExpatParser.notation_declcCs’|js dS|j ||¡}t ||j ¡p*d¡}|j |j |jf¡|j   |¡|_ ||_yt j   ||¡Wn dS|jd\|_ |_|jd=dS)Nr"rQréÿÿÿÿ)r/Z _ent_handlerZ resolveEntityrr2r%r'r.ÚappendrZExternalEntityParserCreaterr*r5)rÚcontextrwrtrur7rrrra–s  zExpatParser.external_entity_refcCs|r d|}|j |¡dS)Nú%)r4Z skippedEntity)rr<Zis_perrrrb¬sz"ExpatParser.skipped_entity_handlerN)rr))r)"rrrrr5r8r9r=r@rDrGrNr6rOr:rEr3r!r$r&r'r[r\rYrZrqrrr_r`rVr]r^rarbrrrrr(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 Ú ImportErrorrCZxml.saxrrrrdrlÚ_weakrefrÚweakrefÚproxyrZLocatorrr*r(r~rZxml.sax.saxutilsZxmlÚpr9ZsaxZ XMLGeneratorZsetErrorHandlerZ ErrorHandlerr5rrrrÚsL      $_