
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \X=  ã               @   s¢  d Z ddlT ddlmZmZ ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 ddlZejdd	… d
krxeddƒ‚[yddlmZ W n ek
r¨   eddƒ‚Y nX eedƒs¾eddƒ‚ddlmZmZmZ ejZejZyddlZW n ek
�r   dd„ ZY nX ddlZejZ[[G dd„ dƒZG dd„ dejƒZG dd„ dejejƒZ dd„ Z!e"dk�ržddl#Z$e!ƒ Z%e%j&e$j'jj(ƒ ƒ e%j)e$j'j*ƒ ƒ e%j+dƒ dS )z0.20é    )Ú*)Úfeature_validationÚfeature_namespaces)Úfeature_namespace_prefixes)Úfeature_external_gesÚfeature_external_pes)Úfeature_string_interning)Úproperty_xml_stringÚproperty_interning_dictNé   Újavazexpat not available in Java)Úexpatzexpat not supportedÚParserCreate)Ú	xmlreaderÚsaxutilsÚhandlerc             C   s   | S )N© )Úor   r   ú+/usr/lib64/python3.6/xml/sax/expatreader.pyÚ_mkproxy'   s    r   c               @   s   e Zd ZdS )Ú_ClosedParserN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   .   s   r   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚExpatLocatorc             C   s   t |ƒ| _d S )N)r   Ú_ref)ÚselfÚparserr   r   r   Ú__init__9   s    zExpatLocator.__init__c             C   s   | j }|jd krd S |jjS )N)r   Ú_parserÚErrorColumnNumber)r   r   r   r   r   ÚgetColumnNumber<   s    
zExpatLocator.getColumnNumberc             C   s   | j }|jd krdS |jjS )Né   )r   r   ÚErrorLineNumber)r   r   r   r   r   ÚgetLineNumberB   s    
zExpatLocator.getLineNumberc             C   s   | j }|d krd S |jjƒ S )N)r   Ú_sourceÚgetPublicId)r   r   r   r   r   r&   H   s    zExpatLocator.getPublicIdc             C   s   | j }|d krd S |jjƒ S )N)r   r%   ÚgetSystemId)r   r   r   r   r   r'   N   s    zExpatLocator.getSystemIdN)r   r   r   r   r!   r$   r&   r'   r   r   r   r   r   3   s
   r   c               @   s  e Zd ZdFdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dGdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Zd?d@„ Z dAdB„ Z!dCS )HÚExpatParserr   é   é   é   c             C   sF   t jj| |ƒ t jƒ | _d | _|| _d | _d| _g | _	d| _
d | _d S )Nr   )r   ÚIncrementalParserr   ZInputSourcer%   r   Ú_namespacesÚ_lex_handler_propÚ_parsingÚ_entity_stackÚ_external_gesÚ
_interning)r   ZnamespaceHandlingÚbufsizer   r   r   r   Z   s    
zExpatParser.__init__c          	   C   sV   t j|ƒ}|| _y*| jƒ  | jjt| ƒƒ tjj	| |ƒ W n   | j
ƒ  ‚ Y nX d S )N)r   Úprepare_input_sourcer%   ÚresetÚ_cont_handlerZsetDocumentLocatorr   r   r,   ÚparseÚ_close_source)r   Úsourcer   r   r   r7   g   s    
zExpatParser.parsec             C   s    |j ƒ d k	r| jj|j ƒ ƒ d S )N)r'   r   ZSetBase)r   r9   r   r   r   ÚprepareParserw   s    zExpatParser.prepareParserc             C   s    t jj| |ƒ | jr| jƒ  d S )N)r   r,   ÚsetContentHandlerr/   Ú_reset_cont_handler)r   r   r   r   r   r;   }   s    zExpatParser.setContentHandlerc             C   sP   |t kr| jS |tkr | jd k	S |tttfkr2dS |tkr@| jS t	d| ƒ‚d S )Nr   zFeature '%s' not recognized)
r   r-   r   r2   r   r   r   r   r1   ÚSAXNotRecognizedException)r   Únamer   r   r   Ú
getFeature‚   s    
zExpatParser.getFeaturec             C   s¦   | j rtdƒ‚|tkr|| _n„|tkr.|| _nt|tkrT|rL| jd krRi | _q¢d | _nN|tkrj|r¢tdƒ‚n8|t	kr€|r¢tdƒ‚n"|t
kr–|r¢tdƒ‚ntd| ƒ‚d S )Nz!Cannot set features while parsingz!expat does not support validationz/expat does not read external parameter entitiesz(expat does not report namespace prefixeszFeature '%s' not recognized)r/   ÚSAXNotSupportedExceptionr   r-   r   r1   r   r2   r   r   r   r=   )r   r>   Ústater   r   r   Ú
setFeatureŽ   s2    
zExpatParser.setFeaturec             C   sd   |t jkr| jS |tkr| jS |tkrT| jrLt| jdƒrB| jjƒ S t	dƒ‚nt
dƒ‚t	d| ƒ‚d S )NÚGetInputContextz=This version of expat does not support getting the XML stringz.XML string cannot be returned when not parsingzProperty '%s' not recognized)r   Úproperty_lexical_handlerr.   r
   r2   r	   r   ÚhasattrrC   r=   r@   )r   r>   r   r   r   ÚgetProperty¬   s    

zExpatParser.getPropertyc             C   sV   |t jkr || _| jrR| jƒ  n2|tkr0|| _n"|tkrFtd| ƒ‚nt	d| ƒ‚d S )NzProperty '%s' cannot be setzProperty '%s' not recognized)
r   rD   r.   r/   Ú_reset_lex_handler_propr
   r2   r	   r@   r=   )r   r>   Úvaluer   r   r   ÚsetProperty¾   s    


zExpatParser.setPropertyc             C   sz   | j s| jƒ  d| _ | jjƒ  y| jj||ƒ W nD tjk
rt } z&ttj	|j
ƒ|| ƒ}| jj|ƒ W Y d d }~X nX d S )Nr"   )r/   r5   r6   ZstartDocumentr   ZParser   ÚerrorZSAXParseExceptionZErrorStringÚcodeZ_err_handlerZ
fatalError)r   ÚdataÚisFinalÚeÚexcr   r   r   ÚfeedÎ   s    
zExpatParser.feedc             C   sB   | j }z|jƒ }|d k	r |jƒ  W d |jƒ }|d k	r<|jƒ  X d S )N)r%   ZgetCharacterStreamÚcloseZgetByteStream)r   r9   Úfiler   r   r   r8   ß   s    zExpatParser._close_sourcec             C   sˆ   | j s| jd kst| jtƒr d S z(| jddd� | jjƒ  d| _d | _W d d| _| jd k	rztƒ }| jj|_| jj	|_	|| _| j
ƒ  X d S )NÚ r"   )rM   r   )r0   r   Ú
isinstancer   rP   r6   ZendDocumentr/   r    r#   r8   )r   r   r   r   r   rQ   ê   s    




zExpatParser.closec             C   s   | j j| j_| j j| j_d S )N)r6   ÚprocessingInstructionr   ZProcessingInstructionHandlerÚ
charactersZCharacterDataHandler)r   r   r   r   r<   ÿ   s    zExpatParser._reset_cont_handlerc             C   s`   | j }| j}|d kr4d |_d |_d |_d |_d |_n(|j|_|j|_|j	|_| j
|_|j|_d S )N)r.   r   ZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerZcommentZ
startCDATAZendCDATAÚstart_doctype_declZendDTD)r   Zlexr   r   r   r   rG     s    z#ExpatParser._reset_lex_handler_propc             C   sú   | j r>tj| jjƒ d| jd�| _d| j_| j| j_	| j
| j_n,tj| jjƒ | jd�| _| j| j_	| j| j_| jƒ  | j| j_| j| j_| j| j_| j| j_d | _| jr®| jƒ  | j| j_y| j| j_W n tk
rÚ   Y nX | jjtj ƒ d| _!g | _"d S )Nú )Úinternr"   r   )#r-   r   r   r%   ZgetEncodingr2   r   Znamespace_prefixesÚstart_element_nsZStartElementHandlerÚend_element_nsZEndElementHandlerÚstart_elementÚend_elementr<   Úunparsed_entity_declZUnparsedEntityDeclHandlerÚnotation_declZNotationDeclHandlerÚstart_namespace_declZStartNamespaceDeclHandlerÚend_namespace_declZEndNamespaceDeclHandlerZ_decl_handler_propr.   rG   Úexternal_entity_refZExternalEntityRefHandlerÚskipped_entity_handlerZSkippedEntityHandlerÚAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr/   r0   )r   r   r   r   r5     s6    







zExpatParser.resetc             C   s   | j d krd S | j jS )N)r   r    )r   r   r   r   r!   ;  s    
zExpatParser.getColumnNumberc             C   s   | j d krdS | j jS )Nr"   )r   r#   )r   r   r   r   r$   @  s    
zExpatParser.getLineNumberc             C   s
   | j jƒ S )N)r%   r&   )r   r   r   r   r&   E  s    zExpatParser.getPublicIdc             C   s
   | j jƒ S )N)r%   r'   )r   r   r   r   r'   H  s    zExpatParser.getSystemIdc             C   s   | j j|t|ƒƒ d S )N)r6   ZstartElementÚAttributesImpl)r   r>   Úattrsr   r   r   r\   L  s    zExpatParser.start_elementc             C   s   | j j|ƒ d S )N)r6   Z
endElement)r   r>   r   r   r   r]   O  s    zExpatParser.end_elementc             C   sð   |j ƒ }t|ƒdkrd |f}n&t|ƒdkr<|d |d f}nt|ƒ}i }i }xˆ|jƒ D ]|\}}|j ƒ }t|ƒ}	|	dkr„|}
d |f}n>|	dkr²d|d |d f }
|d |d f}n|d }
t|ƒ}|||< |
||< qVW | jj|d t||ƒƒ d S )Nr"   é   r   z%s:%sr)   )ÚsplitÚlenÚtupleÚitemsr6   ZstartElementNSÚAttributesNSImpl)r   r>   rf   ÚpairZnewattrsZqnamesZanamerH   ÚpartsZlengthZqnameZapairr   r   r   rZ   R  s.    


zExpatParser.start_element_nsc             C   sV   |j ƒ }t|ƒdkrd |f}n&t|ƒdkr<|d |d f}nt|ƒ}| jj|d ƒ d S )Nr"   rg   r   )rh   ri   rj   r6   ZendElementNS)r   r>   rm   r   r   r   r[   t  s    
zExpatParser.end_element_nsc             C   s   | j j||ƒ d S )N)r6   rU   )r   ÚtargetrL   r   r   r   Úprocessing_instruction€  s    z"ExpatParser.processing_instructionc             C   s   | j j|ƒ d S )N)r6   rV   )r   rL   r   r   r   Úcharacter_data„  s    zExpatParser.character_datac             C   s   | j j||ƒ d S )N)r6   ZstartPrefixMapping)r   ÚprefixZurir   r   r   r`   ‡  s    z ExpatParser.start_namespace_declc             C   s   | j j|ƒ d S )N)r6   ZendPrefixMapping)r   rr   r   r   r   ra   Š  s    zExpatParser.end_namespace_declc             C   s   | j j|||ƒ d S )N)r.   ZstartDTD)r   r>   ÚsysidÚpubidZhas_internal_subsetr   r   r   rW   �  s    zExpatParser.start_doctype_declc             C   s   | j j||||ƒ d S )N)Ú_dtd_handlerZunparsedEntityDecl)r   r>   Úbasers   rt   Znotation_namer   r   r   r^   �  s    z ExpatParser.unparsed_entity_declc             C   s   | j j|||ƒ d S )N)ru   ZnotationDecl)r   r>   rv   rs   rt   r   r   r   r_   “  s    zExpatParser.notation_declc          	   C   s’   | j s
dS | jj||ƒ}tj|| jjƒ p*dƒ}| jj| j	| jfƒ | j	j
|ƒ| _	|| _ytjj| |ƒ W n
   dS | jd \| _	| _| jd= dS )Nr"   rS   r   éÿÿÿÿrw   )r1   Z_ent_handlerZresolveEntityr   r4   r%   r'   r0   Úappendr   ZExternalEntityParserCreater   r,   r7   )r   Úcontextrv   rs   rt   r9   r   r   r   rb   –  s     
zExpatParser.external_entity_refc             C   s   |rd| }| j j|ƒ d S )Nú%)r6   ZskippedEntity)r   r>   Zis_per   r   r   rc   ¬  s    z"ExpatParser.skipped_entity_handlerNi   éìÿ  )r   r{   )r   )"r   r   r   r   r7   r:   r;   r?   rB   rF   rI   rP   r8   rQ   r<   rG   r5   r!   r$   r&   r'   r\   r]   rZ   r[   rp   rq   r`   ra   rW   r^   r_   rb   rc   r   r   r   r   r(   W   s>   

'"r(   c              O   s
   t | |ŽS )N)r(   )ÚargsÚkwargsr   r   r   Úcreate_parser´  s    r~   Ú__main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml),ÚversionZxml.sax._exceptionsZxml.sax.handlerr   r   r   r   r   r   r	   r
   ÚsysÚplatformZSAXReaderNotAvailableZxml.parsersr   ÚImportErrorrE   Zxml.saxr   r   r   re   rl   Ú_weakrefr   ÚweakrefÚproxyr   ZLocatorr   r,   r(   r~   r   Zxml.sax.saxutilsZxmlÚpr;   ZsaxZXMLGeneratorZsetErrorHandlerZErrorHandlerr7   r   r   r   r   Ú<module>   sL   


$  _
