PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /opt/cpanel/ea-ruby24/root/usr/share/gems/doc/nokogiri-1.10.9/rdoc/Nokogiri/XML
Viewing File: /opt/cpanel/ea-ruby24/root/usr/share/gems/doc/nokogiri-1.10.9/rdoc/Nokogiri/XML/Document.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>class Nokogiri::XML::Document - nokogiri-1.10.9 Documentation</title> <script type="text/javascript"> var rdoc_rel_prefix = "../../"; var index_rel_prefix = "../../"; </script> <script src="../../js/navigation.js" defer></script> <script src="../../js/search.js" defer></script> <script src="../../js/search_index.js" defer></script> <script src="../../js/searcher.js" defer></script> <script src="../../js/darkfish.js" defer></script> <link href="../../css/fonts.css" rel="stylesheet"> <link href="../../css/rdoc.css" rel="stylesheet"> <body id="top" role="document" class="class"> <nav role="navigation"> <div id="project-navigation"> <div id="home-section" role="region" title="Quick navigation" class="nav-section"> <h2> <a href="../../index.html" rel="home">Home</a> </h2> <div id="table-of-contents-navigation"> <a href="../../table_of_contents.html#pages">Pages</a> <a href="../../table_of_contents.html#classes">Classes</a> <a href="../../table_of_contents.html#methods">Methods</a> </div> </div> <div id="search-section" role="search" class="project-section initially-hidden"> <form action="#" method="get" accept-charset="utf-8"> <div id="search-field-wrapper"> <input id="search-field" role="combobox" aria-label="Search" aria-autocomplete="list" aria-controls="search-results" type="text" name="search" placeholder="Search" spellcheck="false" title="Type to search, Up and Down to navigate, Enter to load"> </div> <ul id="search-results" aria-label="Search Results" aria-busy="false" aria-expanded="false" aria-atomic="false" class="initially-hidden"></ul> </form> </div> </div> <div id="class-metadata"> <div id="parent-class-section" class="nav-section"> <h3>Parent</h3> <p class="link"><a href="Node.html">Nokogiri::XML::Node</a> </div> <!-- Method Quickref --> <div id="method-list-section" class="nav-section"> <h3>Methods</h3> <ul class="link-list" role="directory"> <li ><a href="#method-c-empty_doc-3F">::empty_doc?</a> <li ><a href="#method-c-new">::new</a> <li ><a href="#method-c-parse">::parse</a> <li ><a href="#method-c-read_io">::read_io</a> <li ><a href="#method-c-read_memory">::read_memory</a> <li ><a href="#method-c-wrap">::wrap</a> <li ><a href="#method-i-3C-3C">#&lt;&lt;</a> <li class="calls-super" ><a href="#method-i-add_child">#add_child</a> <li ><a href="#method-i-canonicalize">#canonicalize</a> <li ><a href="#method-i-clone">#clone</a> <li ><a href="#method-i-collect_namespaces">#collect_namespaces</a> <li ><a href="#method-i-create_cdata">#create_cdata</a> <li ><a href="#method-i-create_comment">#create_comment</a> <li ><a href="#method-i-create_element">#create_element</a> <li ><a href="#method-i-create_entity">#create_entity</a> <li ><a href="#method-i-create_text_node">#create_text_node</a> <li ><a href="#method-i-decorate">#decorate</a> <li ><a href="#method-i-decorators">#decorators</a> <li ><a href="#method-i-document">#document</a> <li ><a href="#method-i-dup">#dup</a> <li ><a href="#method-i-encoding">#encoding</a> <li ><a href="#method-i-encoding-3D">#encoding=</a> <li ><a href="#method-i-fragment">#fragment</a> <li ><a href="#method-i-inspect_attributes">#inspect_attributes</a> <li ><a href="#method-i-name">#name</a> <li ><a href="#method-i-namespaces">#namespaces</a> <li ><a href="#method-i-remove_namespaces-21">#remove_namespaces!</a> <li ><a href="#method-i-root">#root</a> <li ><a href="#method-i-root-3D">#root=</a> <li ><a href="#method-i-slop-21">#slop!</a> <li ><a href="#method-i-to_java">#to_java</a> <li ><a href="#method-i-url">#url</a> <li ><a href="#method-i-validate">#validate</a> <li ><a href="#method-i-version">#version</a> </ul> </div> </div> </nav> <main role="main" aria-labelledby="class-Nokogiri::XML::Document"> <h1 id="class-Nokogiri::XML::Document" class="class"> class Nokogiri::XML::Document </h1> <section class="description"> <p><a href="Document.html">Nokogiri::XML::Document</a> wraps an xml document.</p> <p><a href="Document.html">Nokogiri::XML::Document</a> is the main entry point for dealing with <a href="../XML.html">XML</a> documents. The <a href="Document.html">Document</a> is created by parsing an <a href="../XML.html">XML</a> document. See <a href="Document.html#method-c-parse">::parse</a> for more information on parsing.</p> <p>For searching a <a href="Document.html">Document</a>, see <a href="Searchable.html#method-i-css">Nokogiri::XML::Searchable#css</a> and <a href="Searchable.html#method-i-xpath">Nokogiri::XML::Searchable#xpath</a></p> </section> <section id="5Buntitled-5D" class="documentation-section"> <section class="constants-list"> <header> <h3>Constants</h3> </header> <dl> <dt id="NCNAME_CHAR">NCNAME_CHAR <dd> <dt id="NCNAME_RE">NCNAME_RE <dd> <dt id="NCNAME_START_CHAR">NCNAME_START_CHAR <dd><p>I&#39;m ignoring unicode characters here. See <a href="http://www.w3.org/TR/REC-xml-names/#ns-decl">www.w3.org/TR/REC-xml-names/#ns-decl</a> for more details.</p> </dl> </section> <section class="attribute-method-details" class="method-section"> <header> <h3>Attributes</h3> </header> <div id="attribute-i-errors" class="method-detail"> <div class="method-heading attribute-method-heading"> <span class="method-name">errors</span><span class="attribute-access-type">[RW]</span> </div> <div class="method-description"> <p>A list of <a href="SyntaxError.html">Nokogiri::XML::SyntaxError</a> found when parsing a document</p> </div> </div> </section> <section id="public-class-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Class Methods</h3> </header> <div id="method-c-new" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> new(version = default) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a new document with <code>version</code> (defaults to “1.0”)</p> <div class="method-source-code" id="new-source"> <pre>static VALUE new(int argc, VALUE *argv, VALUE klass) { xmlDocPtr doc; VALUE version, rest, rb_doc ; rb_scan_args(argc, argv, &quot;0*&quot;, &amp;rest); version = rb_ary_entry(rest, (long)0); if (NIL_P(version)) version = rb_str_new2(&quot;1.0&quot;); doc = xmlNewDoc((xmlChar *)StringValueCStr(version)); rb_doc = Nokogiri_wrap_xml_document(klass, doc); rb_obj_call_init(rb_doc, argc, argv); return rb_doc ; }</pre> </div> </div> </div> <div id="method-c-parse" class="method-detail "> <div class="method-heading"> <span class="method-name">parse</span><span class="method-args">(string_or_io, url = nil, encoding = nil, options = ParseOptions::DEFAULT_XML) { |options| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Parse an <a href="../XML.html">XML</a> file.</p> <p><code>string_or_io</code> may be a String, or any object that responds to <em>read</em> and <em>close</em> such as an IO, or StringIO.</p> <p><code>url</code> (optional) is the URI where this document is located.</p> <p><code>encoding</code> (optional) is the encoding that should be used when processing the document.</p> <p><code>options</code> (optional) is a configuration object that sets options during parsing, such as Nokogiri::XML::ParseOptions::RECOVER. See the <a href="ParseOptions.html">Nokogiri::XML::ParseOptions</a> for more information.</p> <p><code>block</code> (optional) is passed a configuration object on which parse options may be set.</p> <p>By default, <a href="../../Nokogiri.html">Nokogiri</a> treats documents as untrusted, and so does not attempt to load DTDs or access the network. See <a href="ParseOptions.html">Nokogiri::XML::ParseOptions</a> for a complete list of options; and that module&#39;s DEFAULT_XML constant for what&#39;s set (and not set) by default.</p> <p><a href="../../Nokogiri.html">Nokogiri</a>.XML() is a convenience method which will call this method.</p> <div class="method-source-code" id="parse-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 44</span> <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parse</span> <span class="ruby-identifier">string_or_io</span>, <span class="ruby-identifier">url</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">encoding</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span> = <span class="ruby-constant">ParseOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_XML</span> <span class="ruby-identifier">options</span> = <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseOptions</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>) <span class="ruby-keyword">if</span> <span class="ruby-constant">Integer</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">options</span> <span class="ruby-comment"># Give the options to the user</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">options</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">empty_doc?</span>(<span class="ruby-identifier">string_or_io</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">strict?</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">SyntaxError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&quot;Empty document&quot;</span>) <span class="ruby-keyword">else</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">encoding</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">new</span>.<span class="ruby-identifier">tap</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">i</span>.<span class="ruby-identifier">encoding</span> = <span class="ruby-identifier">encoding</span> } <span class="ruby-operator">:</span> <span class="ruby-identifier">new</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">doc</span> = <span class="ruby-keyword">if</span> <span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:read</span>) <span class="ruby-identifier">url</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:path</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">path</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">nil</span> <span class="ruby-identifier">read_io</span>(<span class="ruby-identifier">string_or_io</span>, <span class="ruby-identifier">url</span>, <span class="ruby-identifier">encoding</span>, <span class="ruby-identifier">options</span>.<span class="ruby-identifier">to_i</span>) <span class="ruby-keyword">else</span> <span class="ruby-comment"># read_memory pukes on empty docs</span> <span class="ruby-identifier">read_memory</span>(<span class="ruby-identifier">string_or_io</span>, <span class="ruby-identifier">url</span>, <span class="ruby-identifier">encoding</span>, <span class="ruby-identifier">options</span>.<span class="ruby-identifier">to_i</span>) <span class="ruby-keyword">end</span> <span class="ruby-comment"># do xinclude processing</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">do_xinclude</span>(<span class="ruby-identifier">options</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">xinclude?</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">doc</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-c-read_io" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> read_io(io, url, encoding, options) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a new document from an IO object</p> <div class="method-source-code" id="read_io-source"> <pre>static VALUE read_io( VALUE klass, VALUE io, VALUE url, VALUE encoding, VALUE options ) { const char * c_url = NIL_P(url) ? NULL : StringValueCStr(url); const char * c_enc = NIL_P(encoding) ? NULL : StringValueCStr(encoding); VALUE error_list = rb_ary_new(); VALUE document; xmlDocPtr doc; xmlResetLastError(); xmlSetStructuredErrorFunc((void *)error_list, Nokogiri_error_array_pusher); doc = xmlReadIO( (xmlInputReadCallback)io_read_callback, (xmlInputCloseCallback)io_close_callback, (void *)io, c_url, c_enc, (int)NUM2INT(options) ); xmlSetStructuredErrorFunc(NULL, NULL); if(doc == NULL) { xmlErrorPtr error; xmlFreeDoc(doc); error = xmlGetLastError(); if(error) rb_exc_raise(Nokogiri_wrap_xml_syntax_error(error)); else rb_raise(rb_eRuntimeError, &quot;Could not parse document&quot;); return Qnil; } document = Nokogiri_wrap_xml_document(klass, doc); rb_iv_set(document, &quot;@errors&quot;, error_list); return document; }</pre> </div> </div> </div> <div id="method-c-read_memory" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> read_memory(string, url, encoding, options) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a new document from a String</p> <div class="method-source-code" id="read_memory-source"> <pre>static VALUE read_memory( VALUE klass, VALUE string, VALUE url, VALUE encoding, VALUE options ) { const char * c_buffer = StringValuePtr(string); const char * c_url = NIL_P(url) ? NULL : StringValueCStr(url); const char * c_enc = NIL_P(encoding) ? NULL : StringValueCStr(encoding); int len = (int)RSTRING_LEN(string); VALUE error_list = rb_ary_new(); VALUE document; xmlDocPtr doc; xmlResetLastError(); xmlSetStructuredErrorFunc((void *)error_list, Nokogiri_error_array_pusher); doc = xmlReadMemory(c_buffer, len, c_url, c_enc, (int)NUM2INT(options)); xmlSetStructuredErrorFunc(NULL, NULL); if(doc == NULL) { xmlErrorPtr error; xmlFreeDoc(doc); error = xmlGetLastError(); if(error) rb_exc_raise(Nokogiri_wrap_xml_syntax_error(error)); else rb_raise(rb_eRuntimeError, &quot;Could not parse document&quot;); return Qnil; } document = Nokogiri_wrap_xml_document(klass, doc); rb_iv_set(document, &quot;@errors&quot;, error_list); return document; }</pre> </div> </div> </div> <div id="method-c-wrap" class="method-detail "> <div class="method-heading"> <span class="method-name">wrap</span><span class="method-args">(document)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p><code>JRuby</code> Wraps Java&#39;s org.w3c.dom.document and returns <a href="Document.html">Nokogiri::XML::Document</a></p> <div class="method-source-code" id="wrap-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 257</span> <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">wrap</span> <span class="ruby-identifier">document</span> <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;JRuby only method&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Nokogiri</span>.<span class="ruby-identifier">jruby?</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">wrapJavaDocument</span>(<span class="ruby-identifier">document</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> <section id="private-class-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Private Class Methods</h3> </header> <div id="method-c-empty_doc-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">empty_doc?</span><span class="method-args">(string_or_io)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="empty_doc-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 271</span> <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">empty_doc?</span> <span class="ruby-identifier">string_or_io</span> <span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:empty?</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">empty?</span>) <span class="ruby-operator">||</span> (<span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:eof?</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">eof?</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> <section id="public-instance-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Public Instance Methods</h3> </header> <div id="method-i-3C-3C" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">&lt;&lt;</span><span class="method-args">(node_or_tags)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Document.html#method-i-add_child">add_child</a> </div> </div> <div id="method-i-add_child" class="method-detail "> <div class="method-heading"> <span class="method-name">add_child</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-calls-super"> Calls superclass method <a href="Node.html#method-i-add_child">Nokogiri::XML::Node#add_child</a> </div> <div class="method-source-code" id="add_child-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 242</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_child</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;A document may not have multiple root nodes.&quot;</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">root</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">root</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">!=</span> <span class="ruby-string">&#39;nokogiri_text_wrapper&#39;</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">node_or_tags</span>.<span class="ruby-identifier">comment?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">node_or_tags</span>.<span class="ruby-identifier">processing_instruction?</span>) <span class="ruby-identifier">node_or_tags</span> = <span class="ruby-identifier">coerce</span>(<span class="ruby-identifier">node_or_tags</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">node_or_tags</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">NodeSet</span>) <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;A document may not have multiple root nodes.&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">node_or_tags</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span> <span class="ruby-keyword">super</span>(<span class="ruby-identifier">node_or_tags</span>.<span class="ruby-identifier">first</span>) <span class="ruby-keyword">else</span> <span class="ruby-keyword">super</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Document.html#method-i-3C-3C">&lt;&lt;</a> </div> </div> <div id="method-i-canonicalize" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> canonicalize(mode=XML_C14N_1_0,inclusive_namespaces=nil,with_comments=false) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-heading"> <span class="method-callseq"> canonicalize { |obj, parent| ... } </span> </div> <div class="method-description"> <p>Canonicalize a document and return the results. Takes an optional block that takes two parameters: the <code>obj</code> and that node&#39;s <code>parent</code>. The <code>obj</code> will be either a <a href="Node.html">Nokogiri::XML::Node</a>, or a <a href="Namespace.html">Nokogiri::XML::Namespace</a> The block must return a non-nil, non-false value if the <code>obj</code> passed in should be included in the canonicalized document.</p> <div class="method-source-code" id="canonicalize-source"> <pre>static VALUE canonicalize(int argc, VALUE* argv, VALUE self) { VALUE mode; VALUE incl_ns; VALUE with_comments; xmlChar **ns; long ns_len, i; xmlDocPtr doc; xmlOutputBufferPtr buf; xmlC14NIsVisibleCallback cb = NULL; void * ctx = NULL; VALUE rb_cStringIO; VALUE io; rb_scan_args(argc, argv, &quot;03&quot;, &amp;mode, &amp;incl_ns, &amp;with_comments); Data_Get_Struct(self, xmlDoc, doc); rb_cStringIO = rb_const_get_at(rb_cObject, rb_intern(&quot;StringIO&quot;)); io = rb_class_new_instance(0, 0, rb_cStringIO); buf = xmlAllocOutputBuffer(NULL); buf-&gt;writecallback = (xmlOutputWriteCallback)io_write_callback; buf-&gt;closecallback = (xmlOutputCloseCallback)io_close_callback; buf-&gt;context = (void *)io; if(rb_block_given_p()) { cb = block_caller; ctx = (void *)rb_block_proc(); } if(NIL_P(incl_ns)){ ns = NULL; } else{ Check_Type(incl_ns, T_ARRAY); ns_len = RARRAY_LEN(incl_ns); ns = calloc((size_t)ns_len+1, sizeof(xmlChar *)); for (i = 0 ; i &lt; ns_len ; i++) { VALUE entry = rb_ary_entry(incl_ns, i); ns[i] = (xmlChar*)StringValueCStr(entry); } } xmlC14NExecute(doc, cb, ctx, (int) (NIL_P(mode) ? 0 : NUM2INT(mode)), ns, (int) RTEST(with_comments), buf); xmlOutputBufferClose(buf); return rb_funcall(io, rb_intern(&quot;string&quot;), 0); }</pre> </div> </div> </div> <div id="method-i-clone" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">clone</span><span class="method-args">(p1 = v1)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Document.html#method-i-dup">dup</a> </div> </div> <div id="method-i-collect_namespaces" class="method-detail "> <div class="method-heading"> <span class="method-name">collect_namespaces</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Recursively get all namespaces from this node and its subtree and return them as a hash.</p> <p>For example, given this document:</p> <pre>&lt;root xmlns:foo=&quot;bar&quot;&gt; &lt;bar xmlns:hello=&quot;world&quot; /&gt; &lt;/root&gt;</pre> <p>This method will return:</p> <pre class="ruby">{ <span class="ruby-string">&#39;xmlns:foo&#39;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;bar&#39;</span>, <span class="ruby-string">&#39;xmlns:hello&#39;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;world&#39;</span> } </pre> <p>WARNING: this method will clobber duplicate names in the keys. For example, given this document:</p> <pre>&lt;root xmlns:foo=&quot;bar&quot;&gt; &lt;bar xmlns:foo=&quot;baz&quot; /&gt; &lt;/root&gt;</pre> <p>The hash returned will look like this: { &#39;xmlns:foo&#39; =&gt; &#39;bar&#39; }</p> <p>Non-prefixed default namespaces (as in “xmlns=”) are not included in the hash.</p> <p>Note that this method does an xpath lookup for nodes with namespaces, and as a result the order may be dependent on the implementation of the underlying <a href="../XML.html">XML</a> library.</p> <div class="method-source-code" id="collect_namespaces-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 167</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">collect_namespaces</span> <span class="ruby-identifier">xpath</span>(<span class="ruby-string">&quot;//namespace::*&quot;</span>).<span class="ruby-identifier">inject</span>({}) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">hash</span>, <span class="ruby-identifier">ns</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hash</span>[[<span class="ruby-string">&quot;xmlns&quot;</span>,<span class="ruby-identifier">ns</span>.<span class="ruby-identifier">prefix</span>].<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;:&quot;</span>)] = <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">href</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">prefix</span> <span class="ruby-operator">!=</span> <span class="ruby-string">&quot;xml&quot;</span> <span class="ruby-identifier">hash</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-create_cdata" class="method-detail "> <div class="method-heading"> <span class="method-name">create_cdata</span><span class="method-args">(string, &block)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a <a href="CDATA.html">CDATA</a> <a href="Node.html">Node</a> containing <code>string</code></p> <div class="method-source-code" id="create_cdata-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 118</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">create_cdata</span> <span class="ruby-identifier">string</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">CDATA</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">self</span>, <span class="ruby-identifier">string</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-create_comment" class="method-detail "> <div class="method-heading"> <span class="method-name">create_comment</span><span class="method-args">(string, &block)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a <a href="Comment.html">Comment</a> <a href="Node.html">Node</a> containing <code>string</code></p> <div class="method-source-code" id="create_comment-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 123</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">create_comment</span> <span class="ruby-identifier">string</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Comment</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">self</span>, <span class="ruby-identifier">string</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-create_element" class="method-detail "> <div class="method-heading"> <span class="method-name">create_element</span><span class="method-args">(name, *args, &block)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create an element with <code>name</code>, and optionally setting the content and attributes.</p> <pre>doc.create_element &quot;div&quot; # &lt;div&gt;&lt;/div&gt; doc.create_element &quot;div&quot;, :class =&gt; &quot;container&quot; # &lt;div class=&#39;container&#39;&gt;&lt;/div&gt; doc.create_element &quot;div&quot;, &quot;contents&quot; # &lt;div&gt;contents&lt;/div&gt; doc.create_element &quot;div&quot;, &quot;contents&quot;, :class =&gt; &quot;container&quot; # &lt;div class=&#39;container&#39;&gt;contents&lt;/div&gt; doc.create_element &quot;div&quot; { |node| node[&#39;class&#39;] = &quot;container&quot; } # &lt;div class=&#39;container&#39;&gt;&lt;/div&gt;</pre> <div class="method-source-code" id="create_element-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 88</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">create_element</span> <span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-identifier">elm</span> = <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Element</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>, <span class="ruby-keyword">self</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) <span class="ruby-identifier">args</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> <span class="ruby-keyword">case</span> <span class="ruby-identifier">arg</span> <span class="ruby-keyword">when</span> <span class="ruby-constant">Hash</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">key</span> = <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">key</span> <span class="ruby-operator">=~</span> <span class="ruby-constant">NCNAME_RE</span> <span class="ruby-identifier">ns_name</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&quot;:&quot;</span>, <span class="ruby-value">2</span>)[<span class="ruby-value">1</span>] <span class="ruby-identifier">elm</span>.<span class="ruby-identifier">add_namespace_definition</span> <span class="ruby-identifier">ns_name</span>, <span class="ruby-identifier">v</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">elm</span>[<span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-keyword">end</span> } <span class="ruby-keyword">else</span> <span class="ruby-identifier">elm</span>.<span class="ruby-identifier">content</span> = <span class="ruby-identifier">arg</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">ns</span> = <span class="ruby-identifier">elm</span>.<span class="ruby-identifier">namespace_definitions</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">prefix</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">n</span>.<span class="ruby-identifier">prefix</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;&#39;</span> } <span class="ruby-identifier">elm</span>.<span class="ruby-identifier">namespace</span> = <span class="ruby-identifier">ns</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">elm</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-create_entity" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> create_entity(name, type, external_id, system_id, content) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a new entity named <code>name</code>.</p> <p><code>type</code> is an integer representing the type of entity to be created, and it defaults to Nokogiri::XML::EntityDecl::INTERNAL_GENERAL. See the constants on <a href="EntityDecl.html">Nokogiri::XML::EntityDecl</a> for more information.</p> <p><code>external_id</code>, <code>system_id</code>, and <code>content</code> set the External ID, System ID, and content respectively. All of these parameters are optional.</p> <div class="method-source-code" id="create_entity-source"> <pre>static VALUE create_entity(int argc, VALUE *argv, VALUE self) { VALUE name; VALUE type; VALUE external_id; VALUE system_id; VALUE content; xmlEntityPtr ptr; xmlDocPtr doc ; Data_Get_Struct(self, xmlDoc, doc); rb_scan_args(argc, argv, &quot;14&quot;, &amp;name, &amp;type, &amp;external_id, &amp;system_id, &amp;content); xmlResetLastError(); ptr = xmlAddDocEntity( doc, (xmlChar *)(NIL_P(name) ? NULL : StringValueCStr(name)), (int) (NIL_P(type) ? XML_INTERNAL_GENERAL_ENTITY : NUM2INT(type)), (xmlChar *)(NIL_P(external_id) ? NULL : StringValueCStr(external_id)), (xmlChar *)(NIL_P(system_id) ? NULL : StringValueCStr(system_id)), (xmlChar *)(NIL_P(content) ? NULL : StringValueCStr(content)) ); if(NULL == ptr) { xmlErrorPtr error = xmlGetLastError(); if(error) rb_exc_raise(Nokogiri_wrap_xml_syntax_error(error)); else rb_raise(rb_eRuntimeError, &quot;Could not create entity&quot;); return Qnil; } return Nokogiri_wrap_xml_node(cNokogiriXmlEntityDecl, (xmlNodePtr)ptr); }</pre> </div> </div> </div> <div id="method-i-create_text_node" class="method-detail "> <div class="method-heading"> <span class="method-name">create_text_node</span><span class="method-args">(string, &block)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a <a href="Text.html">Text</a> <a href="Node.html">Node</a> with <code>string</code></p> <div class="method-source-code" id="create_text_node-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 113</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">create_text_node</span> <span class="ruby-identifier">string</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Text</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">string</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-keyword">self</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-decorate" class="method-detail "> <div class="method-heading"> <span class="method-name">decorate</span><span class="method-args">(node)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Apply any decorators to <code>node</code></p> <div class="method-source-code" id="decorate-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 215</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">decorate</span> <span class="ruby-identifier">node</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@decorators</span> <span class="ruby-ivar">@decorators</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">klass</span>,<span class="ruby-identifier">list</span><span class="ruby-operator">|</span> <span class="ruby-keyword">next</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-identifier">klass</span>) <span class="ruby-identifier">list</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">moodule</span><span class="ruby-operator">|</span> <span class="ruby-identifier">node</span>.<span class="ruby-identifier">extend</span>(<span class="ruby-identifier">moodule</span>) } } <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-decorators" class="method-detail "> <div class="method-heading"> <span class="method-name">decorators</span><span class="method-args">(key)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the list of decorators given <code>key</code></p> <div class="method-source-code" id="decorators-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 175</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">decorators</span> <span class="ruby-identifier">key</span> <span class="ruby-ivar">@decorators</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> <span class="ruby-ivar">@decorators</span>[<span class="ruby-identifier">key</span>] <span class="ruby-operator">||=</span> [] <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-document" class="method-detail "> <div class="method-heading"> <span class="method-name">document</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>A reference to <code>self</code></p> <div class="method-source-code" id="document-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 133</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">document</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-dup" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> dup </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Copy this <a href="Document.html">Document</a>. An optional depth may be passed in, but it defaults to a deep copy. 0 is a shallow copy, 1 is a deep copy.</p> <div class="method-source-code" id="dup-source"> <pre>static VALUE duplicate_document(int argc, VALUE *argv, VALUE self) { xmlDocPtr doc, dup; VALUE copy; VALUE level; VALUE error_list; if(rb_scan_args(argc, argv, &quot;01&quot;, &amp;level) == 0) level = INT2NUM((long)1); Data_Get_Struct(self, xmlDoc, doc); dup = xmlCopyDoc(doc, (int)NUM2INT(level)); if(dup == NULL) return Qnil; dup-&gt;type = doc-&gt;type; copy = Nokogiri_wrap_xml_document(rb_obj_class(self), dup); error_list = rb_iv_get(self, &quot;@errors&quot;); rb_iv_set(copy, &quot;@errors&quot;, error_list); return copy ; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Document.html#method-i-clone">clone</a> </div> </div> <div id="method-i-encoding" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> encoding </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the encoding for this <a href="Document.html">Document</a></p> <div class="method-source-code" id="encoding-source"> <pre>static VALUE encoding(VALUE self) { xmlDocPtr doc; Data_Get_Struct(self, xmlDoc, doc); if(!doc-&gt;encoding) return Qnil; return NOKOGIRI_STR_NEW2(doc-&gt;encoding); }</pre> </div> </div> </div> <div id="method-i-encoding-3D" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> encoding= encoding </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the encoding string for this <a href="Document.html">Document</a></p> <div class="method-source-code" id="encoding-3D-source"> <pre>static VALUE set_encoding(VALUE self, VALUE encoding) { xmlDocPtr doc; Data_Get_Struct(self, xmlDoc, doc); if (doc-&gt;encoding) free((char *)(uintptr_t) doc-&gt;encoding); /* avoid gcc cast warning */ doc-&gt;encoding = xmlStrdup((xmlChar *)StringValueCStr(encoding)); return encoding; }</pre> </div> </div> </div> <div id="method-i-fragment" class="method-detail "> <div class="method-heading"> <span class="method-name">fragment</span><span class="method-args">(tags = nil)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a <a href="DocumentFragment.html">Nokogiri::XML::DocumentFragment</a> from <code>tags</code> Returns an empty fragment if <code>tags</code> is nil.</p> <div class="method-source-code" id="fragment-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 234</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">fragment</span> <span class="ruby-identifier">tags</span> = <span class="ruby-keyword">nil</span> <span class="ruby-constant">DocumentFragment</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">self</span>, <span class="ruby-identifier">tags</span>, <span class="ruby-keyword">self</span>.<span class="ruby-identifier">root</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-name" class="method-detail "> <div class="method-heading"> <span class="method-name">name</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>The name of this document. Always returns “document”</p> <div class="method-source-code" id="name-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 128</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">name</span> <span class="ruby-string">&#39;document&#39;</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-namespaces" class="method-detail "> <div class="method-heading"> <span class="method-name">namespaces</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the hash of namespaces on the root <a href="Node.html">Nokogiri::XML::Node</a></p> <div class="method-source-code" id="namespaces-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 227</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">namespaces</span> <span class="ruby-identifier">root</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">root</span>.<span class="ruby-identifier">namespaces</span> <span class="ruby-operator">:</span> {} <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-remove_namespaces-21" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> remove_namespaces! </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Remove all namespaces from all nodes in the document.</p> <p>This could be useful for developers who either don&#39;t understand namespaces or don&#39;t care about them.</p> <p>The following example shows a use case, and you can decide for yourself whether this is a good thing or not:</p> <pre class="ruby"><span class="ruby-identifier">doc</span> = <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span> <span class="ruby-value">&lt;&lt;-EOXML &lt;root&gt; &lt;car xmlns:part=&quot;http://general-motors.com/&quot;&gt; &lt;part:tire&gt;Michelin Model XGV&lt;/part:tire&gt; &lt;/car&gt; &lt;bicycle xmlns:part=&quot;http://schwinn.com/&quot;&gt; &lt;part:tire&gt;I&#39;m a bicycle tire!&lt;/part:tire&gt; &lt;/bicycle&gt; &lt;/root&gt; EOXML</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">xpath</span>(<span class="ruby-string">&quot;//tire&quot;</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-comment"># =&gt; &quot;&quot;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">xpath</span>(<span class="ruby-string">&quot;//part:tire&quot;</span>, <span class="ruby-string">&quot;part&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;http://general-motors.com/&quot;</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-comment"># =&gt; &quot;&lt;part:tire&gt;Michelin Model XGV&lt;/part:tire&gt;&quot;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">xpath</span>(<span class="ruby-string">&quot;//part:tire&quot;</span>, <span class="ruby-string">&quot;part&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;http://schwinn.com/&quot;</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-comment"># =&gt; &quot;&lt;part:tire&gt;I&#39;m a bicycle tire!&lt;/part:tire&gt;&quot;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">remove_namespaces!</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">xpath</span>(<span class="ruby-string">&quot;//tire&quot;</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-comment"># =&gt; &quot;&lt;tire&gt;Michelin Model XGV&lt;/tire&gt;&lt;tire&gt;I&#39;m a bicycle tire!&lt;/tire&gt;&quot;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">xpath</span>(<span class="ruby-string">&quot;//part:tire&quot;</span>, <span class="ruby-string">&quot;part&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;http://general-motors.com/&quot;</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-comment"># =&gt; &quot;&quot;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">xpath</span>(<span class="ruby-string">&quot;//part:tire&quot;</span>, <span class="ruby-string">&quot;part&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;http://schwinn.com/&quot;</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-comment"># =&gt; &quot;&quot;</span> </pre> <p>For more information on why this probably is <strong>not</strong> a good thing in general, please direct your browser to <a href="http://tenderlovemaking.com/2009/04/23/namespaces-in-xml.html">tenderlovemaking.com/2009/04/23/namespaces-in-xml.html</a></p> <div class="method-source-code" id="remove_namespaces-21-source"> <pre>VALUE remove_namespaces_bang(VALUE self) { xmlDocPtr doc ; Data_Get_Struct(self, xmlDoc, doc); recursively_remove_namespaces_from_node((xmlNodePtr)doc); return self; }</pre> </div> </div> </div> <div id="method-i-root" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> root </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the root node for this document.</p> <div class="method-source-code" id="root-source"> <pre>static VALUE root(VALUE self) { xmlDocPtr doc; xmlNodePtr root; Data_Get_Struct(self, xmlDoc, doc); root = xmlDocGetRootElement(doc); if(!root) return Qnil; return Nokogiri_wrap_xml_node(Qnil, root) ; }</pre> </div> </div> </div> <div id="method-i-root-3D" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> root= </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the root element on this document</p> <div class="method-source-code" id="root-3D-source"> <pre>static VALUE set_root(VALUE self, VALUE root) { xmlDocPtr doc; xmlNodePtr new_root; xmlNodePtr old_root; Data_Get_Struct(self, xmlDoc, doc); old_root = NULL; if(NIL_P(root)) { old_root = xmlDocGetRootElement(doc); if(old_root) { xmlUnlinkNode(old_root); nokogiri_root_node(old_root); } return root; } Data_Get_Struct(root, xmlNode, new_root); /* If the new root&#39;s document is not the same as the current document, * then we need to dup the node in to this document. */ if(new_root-&gt;doc != doc) { old_root = xmlDocGetRootElement(doc); if (!(new_root = xmlDocCopyNode(new_root, doc, 1))) { rb_raise(rb_eRuntimeError, &quot;Could not reparent node (xmlDocCopyNode)&quot;); } } xmlDocSetRootElement(doc, new_root); if(old_root) nokogiri_root_node(old_root); return root; }</pre> </div> </div> </div> <div id="method-i-slop-21" class="method-detail "> <div class="method-heading"> <span class="method-name">slop!</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Explore a document with shortcut methods. See Nokogiri::Slop for details.</p> <p>Note that any nodes that have been instantiated before <a href="Document.html#method-i-slop-21">slop!</a> is called will not be decorated with sloppy behavior. So, if you&#39;re in irb, the preferred idiom is:</p> <pre>irb&gt; doc = Nokogiri::Slop my_markup</pre> <p>and not</p> <pre>irb&gt; doc = Nokogiri::HTML my_markup ... followed by irb&#39;s implicit inspect (and therefore instantiation of every node) ... irb&gt; doc.slop! ... which does absolutely nothing.</pre> <div class="method-source-code" id="slop-21-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 204</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">slop!</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">decorators</span>(<span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Node</span>).<span class="ruby-identifier">include?</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">Decorators</span><span class="ruby-operator">::</span><span class="ruby-constant">Slop</span> <span class="ruby-identifier">decorators</span>(<span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Node</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">Decorators</span><span class="ruby-operator">::</span><span class="ruby-constant">Slop</span> <span class="ruby-identifier">decorate!</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-to_java" class="method-detail "> <div class="method-heading"> <span class="method-name">to_java</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p><code>JRuby</code> Returns Java&#39;s org.w3c.dom.document of this <a href="Document.html">Document</a>.</p> <div class="method-source-code" id="to_java-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 265</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_java</span> <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;JRuby only method&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-constant">Nokogiri</span>.<span class="ruby-identifier">jruby?</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">toJavaDocument</span>() <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-url" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> url </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the url name for this document.</p> <div class="method-source-code" id="url-source"> <pre>static VALUE url(VALUE self) { xmlDocPtr doc; Data_Get_Struct(self, xmlDoc, doc); if(doc-&gt;URL) return NOKOGIRI_STR_NEW2(doc-&gt;URL); return Qnil; }</pre> </div> </div> </div> <div id="method-i-validate" class="method-detail "> <div class="method-heading"> <span class="method-name">validate</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Validate this <a href="Document.html">Document</a> against it&#39;s <a href="DTD.html">DTD</a>. Returns a list of errors on the document or <code>nil</code> when there is no <a href="DTD.html">DTD</a>.</p> <div class="method-source-code" id="validate-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 183</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">validate</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">internal_subset</span> <span class="ruby-identifier">internal_subset</span>.<span class="ruby-identifier">validate</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-version" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> version </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the <a href="../XML.html">XML</a> version for this <a href="Document.html">Document</a></p> <div class="method-source-code" id="version-source"> <pre>static VALUE version(VALUE self) { xmlDocPtr doc; Data_Get_Struct(self, xmlDoc, doc); if(!doc-&gt;version) return Qnil; return NOKOGIRI_STR_NEW2(doc-&gt;version); }</pre> </div> </div> </div> </section> <section id="private-instance-5Buntitled-5D-method-details" class="method-section"> <header> <h3>Private Instance Methods</h3> </header> <div id="method-i-inspect_attributes" class="method-detail "> <div class="method-heading"> <span class="method-name">inspect_attributes</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="inspect_attributes-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/document.rb, line 280</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">inspect_attributes</span> [<span class="ruby-value">:name</span>, <span class="ruby-value">:children</span>] <span class="ruby-keyword">end</span></pre> </div> </div> </div> </section> </section> </main> <footer id="validator-badges" role="contentinfo"> <p><a href="http://validator.w3.org/check/referer">Validate</a> <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.0.1. <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>. </footer>