m &UIc@sdkZdkZdkZyeieigZWnej oeigZnXdZdZ dZ dZ dZ dZ dZdZd eiifd YZd fd YZd fdYZdefdYZdddZdddZddZdS(Nt START_ELEMENTt END_ELEMENTtCOMMENTtSTART_DOCUMENTt END_DOCUMENTtPROCESSING_INSTRUCTIONtIGNORABLE_WHITESPACEt CHARACTERStPullDOMcBstZdZdZddZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZRS(NcCsdkl}||_ddg|_|i|_g|_|ii|_ y|ii |_ Wnt j onXh|dR<R?RRR(R R/R-R4R,R+R<((Rt startElementvs   cCs3t|ifdg|id<|id|_dS(Ni(RR RRR(R R/((Rt endElementscCso|io?|ii|}t|fdg|id<|id|_n#t|fdg}|i i |dS(Ni( R R2t createCommenttsR4RRRteventRR(R RER4RF((Rtcomments  cCsu|ioB|ii||}t|fdg|id<|id|_n&t||fdg}|i i |dS(Ni( R R2tcreateProcessingInstructionttargettdataR4RRRRFRR(R RIRJR4RF((RtprocessingInstructions  cCs?|ii|}t|fdg|id<|id|_dS(Ni(R R2tcreateTextNodetcharsR4RRR(R RMR4((RtignorableWhitespacescCs?|ii|}t|fdg|id<|id|_dS(Ni(R R2RLRMR4RRR(R RMR4((Rt charactersscCs6|idjo"dk}|iiii|_ndS(N( R R Rtxml.dom.minidomR tdomtminidomtDocumenttimplementation(R R ((Rt startDocuments c Cs<|ii||d}||_t|fdg|i d<|i d|_ |i |x|i D]}|ddt jo<|d\}}}|ii||}t |f|dti||||id}|id}|i|dS(Nii( RRBR R/R-RRRR~(R R/R-RR((RRB/s  cCsBti||||idd}|id}|i |dS(Niii( RRKR RIRJRR4RRR~(R RIRJR4R((RRK5s cCs?ti|||idd}|id}|i|dS(Niii( RRNR RMRR4RRR~(R RMR4R((RRN;s cCs?ti|||idd}|id}|i|dS(Niii( RROR RMRR4RRR~(R RMR4R((RROAs (R_R`R@RBRKRNRO(((RR's     iiicCsj|djo t}nt|tjot|}n|}|pt i i }nt |||S(N( RjRtdefault_bufsizettypetstream_or_stringt _StringTypestopenRhRiR Rpt make_parserRf(RRiRjRh((RRJs  cCsvydkl}Wn tj odkl}nXt|}||}|pti i }nt |||S(N(sStringIO( t cStringIOtStringIOt ImportErrortlentstringRjRRiR RpRRf(RRiRRjR((Rt parseStringUs  (txml.saxR txml.sax.handlerttypest StringTypet UnicodeTypeRRRRRRRRRRRptContentHandlerRRaRfRRRRR(R RRRRRRfRRRRRaRRRRRR((Rt?s*   U!