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      $_