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

  \ñ-  ã               @   sŒ   d dl Zd dlZdZdZdZdZdZdZdZ	d	Z
G d
d„ dejjƒZG dd„ dƒZG dd„ dƒZG dd„ deƒZdZddd„Zddd„ZdS )é    NÚSTART_ELEMENTÚEND_ELEMENTÚCOMMENTÚSTART_DOCUMENTÚEND_DOCUMENTÚPROCESSING_INSTRUCTIONÚIGNORABLE_WHITESPACEÚ
CHARACTERSc               @   sž   e Zd ZdZdZd$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dd„ Zdd„ Zd d!„ Zd"d#„ ZdS )%ÚPullDOMNc             C   sz   ddl m} || _d d g| _| j| _g | _| jj| _y| jj| _W n t	k
rV   Y nX |dig| _
| j
d | _g | _d S )Nr   )ÚXML_NAMESPACEÚxmlé   éÿÿÿÿ)Zxml.domr   ÚdocumentFactoryÚ
firstEventÚ	lastEventÚelementStackÚappendÚpushÚpopÚAttributeErrorÚ_ns_contextsÚ_current_contextÚpending_events)Úselfr   r   © r   ú'/usr/lib64/python3.6/xml/dom/pulldom.pyÚ__init__   s    

zPullDOM.__init__c             C   s   | j d }| j d= |S )Nr   r   r   )r   )r   Úresultr   r   r   r   !   s    
zPullDOM.popc             C   s
   || _ d S )N)Ú_locator)r   Zlocatorr   r   r   ÚsetDocumentLocator&   s    zPullDOM.setDocumentLocatorc             C   sH   t | dƒsg | _| jj|pd|fƒ | jj| jjƒ ƒ |p<d | j|< d S )NÚ_xmlns_attrsÚxmlns)Úhasattrr!   r   r   r   Úcopy)r   ÚprefixÚurir   r   r   ÚstartPrefixMapping)   s
    
zPullDOM.startPrefixMappingc             C   s   | j jƒ | _d S )N)r   r   r   )r   r%   r   r   r   ÚendPrefixMapping0   s    zPullDOM.endPrefixMappingc             C   s˜  d}t | dd ƒ}|d k	r>x|D ]\}}||j||f< qW g | _|\}}	|r–|d krr| j| }
|
rn|
d |	 }n|	}| jrˆ| jj||ƒ}q¶| j||ƒ}n | jrª| jj|	ƒ}n| jd |	ƒ}x´|jƒ D ]¨\}}|\}}||k�r
|dkrè|}nd| }| jj	||ƒ}|j
|ƒ nX|�rL| j| }
|
�r.|
d | }n|}| jj	||ƒ}|j
|ƒ n| jj|ƒ}|j|ƒ ||_qÀW t|fd g| jd< | jd | _| j|ƒ d S )Nzhttp://www.w3.org/2000/xmlns/r!   ú:r"   zxmlns:r   )ÚgetattrÚ_attrsr!   r   ÚdocumentZcreateElementNSÚbuildDocumentÚcreateElementÚitemsZcreateAttributeNSZsetAttributeNodeNSÚcreateAttributeÚsetAttributeNodeÚvaluer   r   r   )r   ÚnameÚtagNameÚattrsZ	xmlns_uriZxmlns_attrsÚanamer2   r&   Z	localnamer%   ÚnodeZa_uriZa_localnameZqnameÚattrr   r   r   ÚstartElementNS3   sP    




zPullDOM.startElementNSc             C   s&   t | jƒ fd g| jd< | jd | _d S )Nr   )r   r   r   )r   r3   r4   r   r   r   ÚendElementNSl   s    zPullDOM.endElementNSc             C   s~   | j r| j j|ƒ}n| jd |ƒ}x0|jƒ D ]$\}}| j j|ƒ}||_|j|ƒ q*W t|fd g| jd< | jd | _| j	|ƒ d S )Nr   )
r,   r.   r-   r/   r0   r2   r1   r   r   r   )r   r3   r5   r7   r6   r2   r8   r   r   r   ÚstartElementp   s    zPullDOM.startElementc             C   s&   t | jƒ fd g| jd< | jd | _d S )Nr   )r   r   r   )r   r3   r   r   r   Ú
endElement   s    zPullDOM.endElementc             C   sN   | j r2| j j|ƒ}t|fd g| jd< | jd | _nt|fd g}| jj|ƒ d S )Nr   )r,   ÚcreateCommentr   r   r   r   )r   Úsr7   Úeventr   r   r   Úcommentƒ   s    zPullDOM.commentc             C   sR   | j r4| j j||ƒ}t|fd g| jd< | jd | _nt||fd g}| jj|ƒ d S )Nr   )r,   ÚcreateProcessingInstructionr   r   r   r   )r   ÚtargetÚdatar7   r?   r   r   r   ÚprocessingInstructionŒ   s    zPullDOM.processingInstructionc             C   s.   | j j|ƒ}t|fd g| jd< | jd | _d S )Nr   )r,   ÚcreateTextNoder   r   )r   Úcharsr7   r   r   r   ÚignorableWhitespace•   s    zPullDOM.ignorableWhitespacec             C   s.   | j j|ƒ}t|fd g| jd< | jd | _d S )Nr   )r,   rE   r	   r   )r   rF   r7   r   r   r   Ú
charactersš   s    zPullDOM.charactersc             C   s$   | j d kr dd l}|jjjj| _ d S )Nr   )r   Zxml.dom.minidomZdomZminidomZDocumentÚimplementation)r   r   r   r   r   ÚstartDocumentŸ   s    
zPullDOM.startDocumentc       	      C   sè   | j j||d ƒ}|| _t|fd g| jd< | jd | _| j|ƒ xœ| jD ]’}|d d tkr„|d \}}}| jj||ƒ}t|f|d< nD|d d t	kr¶| jj
|d d ƒ}t	|f|d< ntd|d d ƒ‚|| jd< || _qFW d | _|jS )Nr   r   zUnknown pending event )r   ZcreateDocumentr,   r   r   r   r   r   rA   r   r=   ÚAssertionErrorZ
firstChild)	r   r&   Ztagnamer7   ÚeÚ_rB   rC   Únr   r   r   r-   ¤   s$    


zPullDOM.buildDocumentc             C   s    t | jfd g| jd< | jƒ  d S )Nr   )r   r,   r   r   )r   r   r   r   ÚendDocument¼   s    zPullDOM.endDocumentc             C   s
   d| _ dS )z.clear(): Explicitly release parsing structuresN)r,   )r   r   r   r   ÚclearÀ   s    zPullDOM.clear)N)Ú__name__Ú
__module__Ú__qualname__r   r,   r   r   r    r'   r(   r9   r:   r;   r<   r@   rD   rG   rH   rJ   r-   rO   rP   r   r   r   r   r
      s&   
9		r
   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚErrorHandlerc             C   s   t |ƒ d S )N)Úprint)r   Ú	exceptionr   r   r   ÚwarningÅ   s    zErrorHandler.warningc             C   s   |‚d S )Nr   )r   rV   r   r   r   ÚerrorÇ   s    zErrorHandler.errorc             C   s   |‚d S )Nr   )r   rV   r   r   r   Ú
fatalErrorÉ   s    zErrorHandler.fatalErrorN)rQ   rR   rS   rW   rX   rY   r   r   r   r   rT   Ä   s   rT   c               @   s\   e Z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S )ÚDOMEventStreamc             C   s2   || _ || _|| _t| jdƒs&| j| _| jƒ  d S )NÚfeed)ÚstreamÚparserÚbufsizer#   Ú_slurpÚgetEventÚreset)r   r\   r]   r^   r   r   r   r   Í   s    zDOMEventStream.__init__c             C   s.   t ƒ | _| jjtjjjdƒ | jj| jƒ d S )Nr   )	r
   Úpulldomr]   Z
setFeaturer   ÚsaxZhandlerZfeature_namespacesZsetContentHandler)r   r   r   r   ra   Õ   s    zDOMEventStream.resetc             C   s   | j ƒ }|r|S t‚d S )N)r`   Ú
IndexError)r   ÚposÚrcr   r   r   Ú__getitem__Û   s    zDOMEventStream.__getitem__c             C   s   | j ƒ }|r|S t‚d S )N)r`   ÚStopIteration)r   rf   r   r   r   Ú__next__á   s    zDOMEventStream.__next__c             C   s   | S )Nr   )r   r   r   r   Ú__iter__ç   s    zDOMEventStream.__iter__c             C   sp   | j ƒ }|g}x\|rj|\}}||kr(d S |tkr>|d j|ƒ |tkrR|j|ƒ n|tkr`|d= | j ƒ }qW d S )Nr   r   r   )r`   r   ÚappendChildr   r   )r   r7   r?   ÚparentsÚtokenZcur_noder   r   r   Ú
expandNodeê   s    zDOMEventStream.expandNodec             C   s‚   | j jd s| j j| j _x<| j jd sT| jj| jƒ}|sF| jjƒ  d S | jj|ƒ qW | j jd d }| j jd d | j jd< |S )Nr   r   )	rb   r   r   r\   Úreadr^   r]   Úcloser[   )r   Úbufrf   r   r   r   r`   ù   s    
zDOMEventStream.getEventc             C   s   | j j| jƒ | j| _| jƒ S )zå Fallback replacement for getEvent() using the
            standard SAX2 interface, which means we slurp the
            SAX events into memory (no performance gain, but
            we are compatible to all SAX parsers).
        )r]   Úparser\   Ú_emitr`   )r   r   r   r   r_     s    zDOMEventStream._slurpc             C   s,   | j jd d }| j jd d | j jd< |S )zn Fallback replacement for getEvent() that emits
            the events that _slurp() read previously.
        r   r   )rb   r   )r   rf   r   r   r   rs     s    zDOMEventStream._emitc             C   s   | j jƒ  | ` d| _d| _dS )z+clear(): Explicitly release parsing objectsN)rb   rP   r]   r\   )r   r   r   r   rP     s    
zDOMEventStream.clearN)rQ   rR   rS   r   ra   rg   ri   rj   rn   r`   r_   rs   rP   r   r   r   r   rZ   Ì   s   
rZ   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚSAX2DOMc             C   s2   t j| |||ƒ | jd }| jd }|j|ƒ d S )Nr   é   r   éþÿÿÿ)r
   r9   r   rk   )r   r3   r4   r5   ÚcurNodeÚ
parentNoder   r   r   r9   #  s    

zSAX2DOM.startElementNSc             C   s0   t j| ||ƒ | jd }| jd }|j|ƒ d S )Nr   ru   r   rv   )r
   r;   r   rk   )r   r3   r5   rw   rx   r   r   r   r;   )  s    

zSAX2DOM.startElementc             C   s4   t j| ||ƒ | jd d }| jd }|j|ƒ d S )Nr   r   r   )r
   rD   r   r   rk   )r   rB   rC   r7   rx   r   r   r   rD   /  s    
zSAX2DOM.processingInstructionc             C   s2   t j| |ƒ | jd d }| jd }|j|ƒ d S )Nr   r   r   )r
   rG   r   r   rk   )r   rF   r7   rx   r   r   r   rG   5  s    
zSAX2DOM.ignorableWhitespacec             C   s2   t j| |ƒ | jd d }| jd }|j|ƒ d S )Nr   r   r   )r
   rH   r   r   rk   )r   rF   r7   rx   r   r   r   rH   ;  s    
zSAX2DOM.charactersN)rQ   rR   rS   r9   r;   rD   rG   rH   r   r   r   r   rt   !  s
   rt   ru   é   é   c             C   s@   |d krt }t| tƒr"t| dƒ}n| }|s4tjjƒ }t|||ƒS )NÚrb)Údefault_bufsizeÚ
isinstanceÚstrÚopenr   rc   Úmake_parserrZ   )Zstream_or_stringr]   r^   r\   r   r   r   rr   D  s    

rr   c             C   s6   ddl m} t| ƒ}|| ƒ}|s*tjjƒ }t|||ƒS )Nr   )ÚStringIO)Úior�   Úlenr   rc   r€   rZ   )Ústringr]   r�   r^   rq   r   r   r   ÚparseStringO  s    
r…   i @  iì?  )NN)N)Zxml.saxr   Zxml.sax.handlerr   r   r   r   r   r   r   r	   rc   ZContentHandlerr
   rT   rZ   rt   r|   rr   r…   r   r   r   r   Ú<module>   s"    8U!
