
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!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   )ÚgetattrZ_attrsr!   r   ÚdocumentZcreateElementNSÚbuildDocumentÚcreateElementÚitemsZcreateAttributeNSZsetAttributeNodeNSÚcreateAttributeÚsetAttributeNodeÚvaluer   r   r   )r   ÚnameÚtagNameÚattrsZ	xmlns_uriZxmlns_attrsÚanamer1   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   r2   r3   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.   r/   r1   r0   r   r   r   )r   r2   r4   r6   r5   r1   r7   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   r2   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   Úsr6   Ú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Údatar6   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   Úcharsr6   r   r   r   ÚignorableWhitespace•   s    zPullDOM.ignorableWhitespacec             C   s.   | j j|ƒ}t|fd g| jd< | jd | _d S )Nr   )r+   rD   r	   r   )r   rE   r6   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   r@   r   r<   ÚAssertionErrorZ
firstChild)	r   r&   Ztagnamer6   ÚeÚ_rA   rB   Ú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 )N)r+   )r   r   r   r   ÚclearÀ   s    zPullDOM.clear)N)Ú__name__Ú
__module__Ú__qualname__r   r+   r   r   r    r'   r(   r8   r9   r:   r;   r?   rC   rF   rG   rI   r,   rN   rO   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   rU   r   r   r   ÚerrorÇ   s    zErrorHandler.errorc             C   s   |‚d S )Nr   )r   rU   r   r   r   Ú
fatalErrorÉ   s    zErrorHandler.fatalErrorN)rP   rQ   rR   rV   rW   rX   r   r   r   r   rS   Ä   s   rS   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   r`   Õ   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   re   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   r6   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   )	ra   r   r   r[   Úreadr]   r\   ÚcloserZ   )r   Úbufre   r   r   r   r_   ù   s    
zDOMEventStream.getEventc             C   s   | j j| jƒ | j| _| jƒ S )N)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 )Nr   r   )ra   r   )r   re   r   r   r   rr     s    zDOMEventStream._emitc             C   s   | j jƒ  | ` d | _d | _d S )N)ra   rO   r\   r[   )r   r   r   r   rO     s    
zDOMEventStream.clearN)rP   rQ   rR   r   r`   rf   rh   ri   rm   r_   r^   rr   rO   r   r   r   r   rY   Ì   s   
rY   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
   r8   r   rj   )r   r2   r3   r4   ÚcurNodeÚ
parentNoder   r   r   r8   #  s    

zSAX2DOM.startElementNSc             C   s0   t j| ||ƒ | jd }| jd }|j|ƒ d S )Nr   rt   r   ru   )r
   r:   r   rj   )r   r2   r4   rv   rw   r   r   r   r:   )  s    

zSAX2DOM.startElementc             C   s4   t j| ||ƒ | jd d }| jd }|j|ƒ d S )Nr   r   r   )r
   rC   r   r   rj   )r   rA   rB   r6   rw   r   r   r   rC   /  s    
zSAX2DOM.processingInstructionc             C   s2   t j| |ƒ | jd d }| jd }|j|ƒ d S )Nr   r   r   )r
   rF   r   r   rj   )r   rE   r6   rw   r   r   r   rF   5  s    
zSAX2DOM.ignorableWhitespacec             C   s2   t j| |ƒ | jd d }| jd }|j|ƒ d S )Nr   r   r   )r
   rG   r   r   rj   )r   rE   r6   rw   r   r   r   rG   ;  s    
zSAX2DOM.charactersN)rP   rQ   rR   r8   r:   rC   rF   rG   r   r   r   r   rs   !  s
   rs   rt   é   é   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   rb   Úmake_parserrY   )Zstream_or_stringr\   r]   r[   r   r   r   rq   D  s    

rq   c             C   s6   ddl m} t| ƒ}|| ƒ}|s*tjjƒ }t|||ƒS )Nr   )ÚStringIO)Úior€   Úlenr   rb   r   rY   )Ústringr\   r€   r]   rp   r   r   r   ÚparseStringO  s    
r„   i @  iì?  )NN)N)Zxml.saxr   Zxml.sax.handlerr   r   r   r   r   r   r   r	   rb   ZContentHandlerr
   rS   rY   rs   r{   rq   r„   r   r   r   r   Ú<module>   s"    8U!
