î j fñ-ã@sËddlZddlZdZdZdZdZdZdZdZ d Z Gd d „d ej j ƒZ Gd d „d ƒZGdd„dƒZGdd„de ƒZdZdddd„Zddd„ZdS)éNÚ START_ELEMENTÚ END_ELEMENTÚCOMMENTÚSTART_DOCUMENTÚ END_DOCUMENTÚPROCESSING_INSTRUCTIONÚIGNORABLE_WHITESPACEÚ CHARACTERSc@sëeZdZdZdZddd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„ZdS)$ÚPullDOMNc Cs¤ddlm}||_ddg|_|j|_g|_|jj|_y|jj|_Wnt k rsYnXid|6g|_ |j d|_ g|_ dS)Nr)Ú XML_NAMESPACEÚxmlééÿÿÿÿ) Zxml.domr ÚdocumentFactoryÚ firstEventÚ lastEventÚ elementStackÚappendÚpushÚpopÚAttributeErrorÚ _ns_contextsÚ_current_contextÚpending_events)Úselfrr ©rú4/opt/alt/python34/lib64/python3.4/xml/dom/pulldom.pyÚ__init__s    zPullDOM.__init__cCs|jd}|jd=|S)Nr rr)r)rÚresultrrrr!s  z PullDOM.popcCs ||_dS)N)Ú_locator)rZlocatorrrrÚsetDocumentLocator&szPullDOM.setDocumentLocatorcCsgt|dƒsg|_n|jj|p-d|fƒ|jj|jjƒƒ|pYd|j|rrrÚprocessingInstructionŒs  zPullDOM.processingInstructioncCs?|jj|ƒ}t|fdg|jd<|jd|_dS)Nr )r+ÚcreateTextNoderr)rÚcharsr6rrrÚignorableWhitespace•szPullDOM.ignorableWhitespacecCs?|jj|ƒ}t|fdg|jd<|jd|_dS)Nr )r+rDr r)rrEr6rrrÚ charactersšszPullDOM.characterscCs7|jdkr3ddl}|jjjj|_ndS)Nr)rZxml.dom.minidomZdomZminidomZDocumentÚimplementation)rr rrrÚ startDocumentŸs zPullDOM.startDocumentc Cs8|jj||dƒ}||_t|fdg|jd<|jd|_|j|ƒxÎ|jD]Ã}|ddtkr¶|d\}}}|jj||ƒ}t|f|dÚparentsÚtokenZcur_noderrrÚ expandNodeês         zDOMEventStream.expandNodecCs®|jjds%|jj|j_nxP|jjdsw|jj|jƒ}|sd|jjƒdS|jj|ƒq(W|jjdd}|jjdd|jjd<|S)Nr r) rarrr[Úreadr]r\ÚcloserZ)rÚbufrerrrr_ùs zDOMEventStream.getEventcCs)|jj|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_)rrrrr^s zDOMEventStream._slurpcCs6|jjdd}|jjdd|jjd<|S)zn Fallback replacement for getEvent() that emits the events that _slurp() read previously. r r)rar)rrerrrrrszDOMEventStream._emitcCs)|jjƒ|`d|_d|_dS)z+clear(): Explicitly release parsing objectsN)rarOr\r[)rrrrrOs  zDOMEventStream.clearN) rPrQrRrr`rfrhrirmr_r^rrrOrrrrrYÌs         rYc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚSAX2DOMcCsAtj||||ƒ|jd}|jd}|j|ƒdS)Nr éréþÿÿÿ)r r8rrj)rr2r3r4ÚcurNodeÚ parentNoderrrr8#s  zSAX2DOM.startElementNScCs>tj|||ƒ|jd}|jd}|j|ƒdS)Nr rtrru)r r:rrj)rr2r4rvrwrrrr:)s  zSAX2DOM.startElementcCsBtj|||ƒ|jdd}|jd}|j|ƒdS)Nrr r)r rCrrrj)rrArBr6rwrrrrC/s zSAX2DOM.processingInstructioncCs?tj||ƒ|jdd}|jd}|j|ƒdS)Nrr r)r rFrrrj)rrEr6rwrrrrF5s zSAX2DOM.ignorableWhitespacecCs?tj||ƒ|jdd}|jd}|j|ƒdS)Nrr r)r rGrrrj)rrEr6rwrrrrG;s zSAX2DOM.charactersN)rPrQrRr8r:rCrFrGrrrrrs!s     rsrtéécCsd|dkrt}nt|tƒr6t|dƒ}n|}|sTtjjƒ}nt|||ƒS)NÚrb)Údefault_bufsizeÚ isinstanceÚstrÚopenr rbÚ make_parserrY)Zstream_or_stringr\r]r[rrrrqDs  rqcCsPddlm}t|ƒ}||ƒ}|s@tjjƒ}nt|||ƒS)Nr)ÚStringIO)Úior€Úlenr rbrrY)Ústringr\r€r]rprrrÚ parseStringOs   r„i@iì?)Zxml.saxr Zxml.sax.handlerrrrrrrrr rbZContentHandlerr rSrYrsr{rqr„rrrrÚs  ·U!