<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    iÛf<?  ã                   @   s¦  d Z 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r|edd	ƒ‚[z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z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& 'e%j(j )¡ ¡ e& *e%j( +¡ ¡ e& ,d¡ d	S )z]
SAX driver for the pyexpat C module.  This driver works with
pyexpat.__version__ == '2.22'.
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   ú8/opt/alt/python38/lib64/python3.8/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                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚExpatLocatorz¼Locator for use with the ExpatParser class.

    This uses a weak reference to the parser object to avoid creating
    a circular reference between the parser and the content handler.
    c                 C   s   t |ƒ| _d S r   )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 r   )r   Ú_parserÚErrorColumnNumberr   r   r   r   ÚgetColumnNumber<   s    
zExpatLocator.getColumnNumberc                 C   s   | j }|jd krdS |jjS ©Né   )r   r!   ÚErrorLineNumberr   r   r   r   ÚgetLineNumberB   s    
zExpatLocator.getLineNumberc                 C   s   | j }|d krd S |j ¡ S r   )r   Ú_sourceÚgetPublicIdr   r   r   r   r)   H   s    zExpatLocator.getPublicIdc                 C   s   | j }|d krd S |j ¡ S r   )r   r(   ÚgetSystemIdr   r   r   r   r*   N   s    zExpatLocator.getSystemIdN)	r   r   r   Ú__doc__r    r#   r'   r)   r*   r   r   r   r   r   3   s   r   c                   @   s  e Zd ZdZdEdd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
d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d$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Z d>d?„ Z!d@dA„ Z"dBdC„ Z#dDS )GÚExpatParserz$SAX driver for the pyexpat C module.r   éìÿ  c                 C   sF   t j | |¡ t  ¡ | _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  |¡}|| _z*|  ¡  | j t| ƒ¡ tj 	| |¡ W n   |  
¡  ‚ Y nX dS )z3Parse an XML document from a URL or an InputSource.N)r   Úprepare_input_sourcer(   ÚresetÚ_cont_handlerZsetDocumentLocatorr   r   r.   ÚparseÚ_close_source©r   Úsourcer   r   r   r9   g   s    
zExpatParser.parsec                 C   s    |  ¡ d k	r| j |  ¡ ¡ d S r   )r*   r!   ZSetBaser;   r   r   r   ÚprepareParserw   s    zExpatParser.prepareParserc                 C   s    t j | |¡ | jr|  ¡  d S r   )r   r.   ÚsetContentHandlerr1   Ú_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   úFeature '%s' not recognized)
r   r/   r   r4   r   r   r   r   r3   Ú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 prefixesr@   )r1   ÚSAXNotSupportedExceptionr   r/   r   r3   r   r4   r   r   r   rA   )r   rC   Ústater   r   r   Ú
setFeatureŽ   s:    
ÿÿÿÿ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 ¡ 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 parsingúProperty '%s' not recognized)r   Úproperty_lexical_handlerr0   r
   r4   r	   r!   ÚhasattrrH   rA   rE   rB   r   r   r   ÚgetProperty¬   s    

ÿÿzExpatParser.getPropertyc                 C   sV   |t jkr || _| jrR|  ¡  n2|tkr0|| _n"|tkrFtd| ƒ‚nt	d| ƒ‚d S )NzProperty '%s' cannot be setrI   )
r   rJ   r0   r1   Ú_reset_lex_handler_propr
   r4   r	   rE   rA   )r   rC   Úvaluer   r   r   ÚsetProperty¾   s    

ÿÿzExpatParser.setPropertyc              
   C   sz   | j s|  ¡  d| _ | j ¡  z| j ||¡ W nD tjk
rt } z$tt 	|j
¡|| ƒ}| j |¡ W 5 d }~X Y nX d S r$   )r1   r7   r8   ZstartDocumentr!   ÚParser   ÚerrorÚSAXParseExceptionÚErrorStringÚcodeÚ_err_handlerÚ
fatalError)r   ÚdataÚisFinalÚeÚexcr   r   r   ÚfeedÎ   s    
zExpatParser.feedc              
   C   s”   | j d krd S | j  ¡ }zhz| j  d¡ | j  dd¡ W nD tjk
r| } z$tt |j¡|| ƒ}| j	 
|¡ W 5 d }~X Y nX W 5 | j  |¡ X d S )NFó    )r!   ZGetReparseDeferralEnabledZSetReparseDeferralEnabledrP   r   rQ   rR   rS   rT   rU   rV   )r   Zwas_enabledrY   rZ   r   r   r   Úflushß   s    

"zExpatParser.flushc                 C   sB   | j }z| ¡ }|d k	r | ¡  W 5 | ¡ }|d k	r<| ¡  X d S r   )r(   ZgetByteStreamÚcloseZgetCharacterStream)r   r<   Úfiler   r   r   r:   í   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	 
¡  d| _d | _W 5 d| _| jd k	rztƒ }| jj|_| jj|_|| _|  ¡  X d S )Nr   Ú r%   )rX   )r2   r!   Ú
isinstancer   r1   r"   r&   r:   r[   r8   ZendDocumentr   r   r   r   r^   ø   s     
ÿ




zExpatParser.closec                 C   s   | j j| j_| j j| j_d S r   )r8   Ú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 r   )r0   r!   ZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerZcommentZ
startCDATAZendCDATAÚstart_doctype_declZendDTD)r   Zlexr   r   r   r   rM     s    z#ExpatParser._reset_lex_handler_propc                 C   sú   | j r>tj| j ¡ d| jd| _d| j_| j| j_	| j
| j_n,tj| j ¡ | jd| _| j| j_	| j| j_|  ¡  | j| j_| j| j_| j| j_| j| j_d | _| jr®|  ¡  | j| j_z| j| j_W n tk
rÚ   Y nX | j tj ¡ d| _!g | _"d S )Nú )Úinternr%   r   )#r/   r   r   r(   ZgetEncodingr4   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_propr0   rM   Úexternal_entity_refZExternalEntityRefHandlerÚskipped_entity_handlerZSkippedEntityHandlerÚAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr1   r2   rd   r   r   r   r7   "  s<    ÿ
ÿ






ÿzExpatParser.resetc                 C   s   | j d krd S | j jS r   )r!   r"   rd   r   r   r   r#   I  s    
zExpatParser.getColumnNumberc                 C   s   | j d krdS | j jS r$   )r!   r&   rd   r   r   r   r'   N  s    
zExpatParser.getLineNumberc                 C   s
   | j  ¡ S r   )r(   r)   rd   r   r   r   r)   S  s    zExpatParser.getPublicIdc                 C   s
   | j  ¡ S r   )r(   r*   rd   r   r   r   r*   V  s    zExpatParser.getSystemIdc                 C   s   | j  |t|ƒ¡ d S r   )r8   ZstartElementÚAttributesImpl)r   rC   Úattrsr   r   r   rj   Z  s    zExpatParser.start_elementc                 C   s   | j  |¡ d S r   )r8   Z
endElementrB   r   r   r   rk   ]  s    zExpatParser.end_elementc                 C   sì   |  ¡ }t|ƒdkrd |f}n&t|ƒdkr<|d |d f}nt|ƒ}i }i }| ¡ D ]|\}}|  ¡ }t|ƒ}	|	dkr‚|}
d |f}n>|	dkr°d|d |d f }
|d |d f}n|d }
t|ƒ}|||< |
||< qT| j |d t||ƒ¡ d S )Nr%   é   r   z%s:%sé   )ÚsplitÚlenÚtupleÚitemsr8   ZstartElementNSÚAttributesNSImpl)r   rC   rt   ÚpairZnewattrsZqnamesZanamerN   ÚpartsZlengthZqnameZapairr   r   r   rh   `  s0    



ÿzExpatParser.start_element_nsc                 C   sV   |  ¡ }t|ƒdkrd |f}n&t|ƒdkr<|d |d f}nt|ƒ}| j |d ¡ d S )Nr%   ru   r   )rw   rx   ry   r8   ZendElementNS)r   rC   r|   r   r   r   ri   ‚  s    
zExpatParser.end_element_nsc                 C   s   | j  ||¡ d S r   )r8   rb   )r   ÚtargetrW   r   r   r   Úprocessing_instructionŽ  s    z"ExpatParser.processing_instructionc                 C   s   | j  |¡ d S r   )r8   rc   )r   rW   r   r   r   Úcharacter_data’  s    zExpatParser.character_datac                 C   s   | j  ||¡ d S r   )r8   ZstartPrefixMapping)r   ÚprefixZurir   r   r   rn   •  s    z ExpatParser.start_namespace_declc                 C   s   | j  |¡ d S r   )r8   ZendPrefixMapping)r   r   r   r   r   ro   ˜  s    zExpatParser.end_namespace_declc                 C   s   | j  |||¡ d S r   )r0   ZstartDTD)r   rC   ÚsysidÚpubidZhas_internal_subsetr   r   r   re   ›  s    zExpatParser.start_doctype_declc                 C   s   | j  ||||¡ d S r   )Ú_dtd_handlerZunparsedEntityDecl)r   rC   Úbaser‚   rƒ   Znotation_namer   r   r   rl   ž  s    z ExpatParser.unparsed_entity_declc                 C   s   | j  |||¡ d S r   )r„   ZnotationDecl)r   rC   r…   r‚   rƒ   r   r   r   rm   ¡  s    zExpatParser.notation_declc                 C   s–   | j s
dS | j ||¡}t || j ¡ p*d¡}| j | j	| jf¡ | j	 
|¡| _	|| _ztj | |¡ W n   Y dS X | jd \| _	| _| jd= dS )Nr%   r`   r   éÿÿÿÿ)r3   Z_ent_handlerZresolveEntityr   r6   r(   r*   r2   Úappendr!   ZExternalEntityParserCreater   r.   r9   )r   Úcontextr…   r‚   rƒ   r<   r   r   r   rp   ¤  s"    
þzExpatParser.external_entity_refc                 C   s   |rd| }| j  |¡ d S )Nú%)r8   ZskippedEntity)r   rC   Zis_per   r   r   rq   º  s    z"ExpatParser.skipped_entity_handlerN)r   r-   )r   )$r   r   r   r+   r    r9   r=   r>   rD   rG   rL   rO   r[   r]   r:   r^   r?   rM   r7   r#   r'   r)   r*   rj   rk   rh   ri   r   r€   rn   ro   re   rl   rm   rp   rq   r   r   r   r   r,   W   sB   

'"r,   c                  O   s
   t | |ŽS r   )r,   )ÚargsÚkwargsr   r   r   Úcreate_parserÂ  s    rŒ   Ú__main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml)-r+   ÚversionZxml.sax._exceptionsZxml.sax.handlerr   r   r   r   r   r   r	   r
   ÚsysÚplatformZSAXReaderNotAvailableZxml.parsersr   ÚImportErrorrK   Zxml.saxr   r   r   rs   r{   Ú_weakrefr   ÚweakrefÚproxyr   ZLocatorr   r.   r,   rŒ   r   Zxml.sax.saxutilsZxmlÚpr>   ZsaxZXMLGeneratorZsetErrorHandlerZErrorHandlerr9   r   r   r   r   Ú<module>   sN   


$  m
