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/Node.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>class Nokogiri::XML::Node - 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="../../Object.html">Object</a> </div> <div id="includes-section" class="nav-section"> <h3>Included Modules</h3> <ul class="link-list"> <li><a class="include" href="PP/Node.html">Nokogiri::XML::PP::Node</a> <li><a class="include" href="Searchable.html">Nokogiri::XML::Searchable</a> <li><span class="include">Enumerable</span> </ul> </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-new">::new</a> <li ><a href="#method-i-3C-3C">#&lt;&lt;</a> <li ><a href="#method-i-3C-3D-3E">#&lt;=&gt;</a> <li ><a href="#method-i-3D-3D">#==</a> <li ><a href="#method-i-3E">#&gt;</a> <li ><a href="#method-i-5B-5D">#[]</a> <li ><a href="#method-i-5B-5D-3D">#[]=</a> <li ><a href="#method-i-accept">#accept</a> <li ><a href="#method-i-add_child">#add_child</a> <li ><a href="#method-i-add_class">#add_class</a> <li ><a href="#method-i-add_namespace">#add_namespace</a> <li ><a href="#method-i-add_namespace_definition">#add_namespace_definition</a> <li ><a href="#method-i-add_next_sibling">#add_next_sibling</a> <li ><a href="#method-i-add_previous_sibling">#add_previous_sibling</a> <li ><a href="#method-i-add_sibling">#add_sibling</a> <li ><a href="#method-i-after">#after</a> <li ><a href="#method-i-ancestors">#ancestors</a> <li ><a href="#method-i-append_class">#append_class</a> <li ><a href="#method-i-attr">#attr</a> <li ><a href="#method-i-attribute">#attribute</a> <li ><a href="#method-i-attribute_nodes">#attribute_nodes</a> <li ><a href="#method-i-attribute_with_ns">#attribute_with_ns</a> <li ><a href="#method-i-attributes">#attributes</a> <li ><a href="#method-i-before">#before</a> <li ><a href="#method-i-blank-3F">#blank?</a> <li ><a href="#method-i-canonicalize">#canonicalize</a> <li ><a href="#method-i-cdata-3F">#cdata?</a> <li ><a href="#method-i-child">#child</a> <li ><a href="#method-i-children">#children</a> <li ><a href="#method-i-children-3D">#children=</a> <li ><a href="#method-i-classes">#classes</a> <li ><a href="#method-i-clone">#clone</a> <li ><a href="#method-i-comment-3F">#comment?</a> <li ><a href="#method-i-compare">#compare</a> <li ><a href="#method-i-content">#content</a> <li ><a href="#method-i-content-3D">#content=</a> <li ><a href="#method-i-create_external_subset">#create_external_subset</a> <li ><a href="#method-i-create_internal_subset">#create_internal_subset</a> <li ><a href="#method-i-css_path">#css_path</a> <li ><a href="#method-i-decorate-21">#decorate!</a> <li ><a href="#method-i-default_namespace-3D">#default_namespace=</a> <li ><a href="#method-i-delete">#delete</a> <li ><a href="#method-i-description">#description</a> <li ><a href="#method-i-do_xinclude">#do_xinclude</a> <li ><a href="#method-i-document">#document</a> <li ><a href="#method-i-document-3F">#document?</a> <li ><a href="#method-i-dump_html">#dump_html</a> <li ><a href="#method-i-dup">#dup</a> <li ><a href="#method-i-each">#each</a> <li ><a href="#method-i-elem-3F">#elem?</a> <li ><a href="#method-i-element-3F">#element?</a> <li ><a href="#method-i-element_children">#element_children</a> <li ><a href="#method-i-elements">#elements</a> <li ><a href="#method-i-encode_special_chars">#encode_special_chars</a> <li ><a href="#method-i-external_subset">#external_subset</a> <li ><a href="#method-i-first_element_child">#first_element_child</a> <li ><a href="#method-i-fragment">#fragment</a> <li ><a href="#method-i-fragment-3F">#fragment?</a> <li ><a href="#method-i-get">#get</a> <li ><a href="#method-i-get_attribute">#get_attribute</a> <li ><a href="#method-i-has_attribute-3F">#has_attribute?</a> <li ><a href="#method-i-html-3F">#html?</a> <li ><a href="#method-i-in_context">#in_context</a> <li ><a href="#method-i-inner_html">#inner_html</a> <li ><a href="#method-i-inner_html-3D">#inner_html=</a> <li ><a href="#method-i-inner_text">#inner_text</a> <li ><a href="#method-i-inspect_attributes">#inspect_attributes</a> <li ><a href="#method-i-internal_subset">#internal_subset</a> <li ><a href="#method-i-key-3F">#key?</a> <li ><a href="#method-i-keys">#keys</a> <li ><a href="#method-i-lang">#lang</a> <li ><a href="#method-i-lang-3D">#lang=</a> <li ><a href="#method-i-last_element_child">#last_element_child</a> <li ><a href="#method-i-line">#line</a> <li ><a href="#method-i-matches-3F">#matches?</a> <li ><a href="#method-i-name">#name</a> <li ><a href="#method-i-name-3D">#name=</a> <li ><a href="#method-i-namespace">#namespace</a> <li ><a href="#method-i-namespace-3D">#namespace=</a> <li ><a href="#method-i-namespace_definitions">#namespace_definitions</a> <li ><a href="#method-i-namespace_scopes">#namespace_scopes</a> <li ><a href="#method-i-namespaced_key-3F">#namespaced_key?</a> <li ><a href="#method-i-namespaces">#namespaces</a> <li ><a href="#method-i-native_content-3D">#native_content=</a> <li ><a href="#method-i-native_write_to">#native_write_to</a> <li ><a href="#method-i-next">#next</a> <li ><a href="#method-i-next_element">#next_element</a> <li ><a href="#method-i-next_sibling">#next_sibling</a> <li ><a href="#method-i-node_name">#node_name</a> <li ><a href="#method-i-node_name-3D">#node_name=</a> <li ><a href="#method-i-node_type">#node_type</a> <li ><a href="#method-i-parent">#parent</a> <li ><a href="#method-i-parent-3D">#parent=</a> <li ><a href="#method-i-parse">#parse</a> <li ><a href="#method-i-path">#path</a> <li ><a href="#method-i-pointer_id">#pointer_id</a> <li ><a href="#method-i-prepend_child">#prepend_child</a> <li ><a href="#method-i-previous">#previous</a> <li ><a href="#method-i-previous-3D">#previous=</a> <li ><a href="#method-i-previous_element">#previous_element</a> <li ><a href="#method-i-previous_sibling">#previous_sibling</a> <li ><a href="#method-i-process_xincludes">#process_xincludes</a> <li ><a href="#method-i-processing_instruction-3F">#processing_instruction?</a> <li ><a href="#method-i-read_only-3F">#read_only?</a> <li ><a href="#method-i-remove">#remove</a> <li ><a href="#method-i-remove_attribute">#remove_attribute</a> <li ><a href="#method-i-remove_class">#remove_class</a> <li ><a href="#method-i-replace">#replace</a> <li ><a href="#method-i-serialize">#serialize</a> <li ><a href="#method-i-set">#set</a> <li ><a href="#method-i-set_attribute">#set_attribute</a> <li ><a href="#method-i-set_namespace">#set_namespace</a> <li ><a href="#method-i-swap">#swap</a> <li ><a href="#method-i-text">#text</a> <li ><a href="#method-i-text-3F">#text?</a> <li ><a href="#method-i-to_format">#to_format</a> <li ><a href="#method-i-to_html">#to_html</a> <li ><a href="#method-i-to_s">#to_s</a> <li ><a href="#method-i-to_str">#to_str</a> <li ><a href="#method-i-to_xhtml">#to_xhtml</a> <li ><a href="#method-i-to_xml">#to_xml</a> <li ><a href="#method-i-traverse">#traverse</a> <li ><a href="#method-i-type">#type</a> <li ><a href="#method-i-unlink">#unlink</a> <li ><a href="#method-i-values">#values</a> <li ><a href="#method-i-wrap">#wrap</a> <li ><a href="#method-i-write_format_to">#write_format_to</a> <li ><a href="#method-i-write_html_to">#write_html_to</a> <li ><a href="#method-i-write_to">#write_to</a> <li ><a href="#method-i-write_xhtml_to">#write_xhtml_to</a> <li ><a href="#method-i-write_xml_to">#write_xml_to</a> <li ><a href="#method-i-xml-3F">#xml?</a> </ul> </div> </div> </nav> <main role="main" aria-labelledby="class-Nokogiri::XML::Node"> <h1 id="class-Nokogiri::XML::Node" class="class"> class Nokogiri::XML::Node </h1> <section class="description"> <p><a href="Node.html">Nokogiri::XML::Node</a> is your window to the fun filled world of dealing with <a href="../XML.html">XML</a> and <a href="../HTML.html">HTML</a> tags. A <a href="Node.html">Nokogiri::XML::Node</a> may be treated similarly to a hash with regard to attributes. For example (from irb):</p> <pre>irb(main):004:0&gt; node =&gt; &lt;a href=&quot;#foo&quot; id=&quot;link&quot;&gt;link&lt;/a&gt; irb(main):005:0&gt; node[&#39;href&#39;] =&gt; &quot;#foo&quot; irb(main):006:0&gt; node.keys =&gt; [&quot;href&quot;, &quot;id&quot;] irb(main):007:0&gt; node.values =&gt; [&quot;#foo&quot;, &quot;link&quot;] irb(main):008:0&gt; node[&#39;class&#39;] = &#39;green&#39; =&gt; &quot;green&quot; irb(main):009:0&gt; node =&gt; &lt;a href=&quot;#foo&quot; id=&quot;link&quot; class=&quot;green&quot;&gt;link&lt;/a&gt; irb(main):010:0&gt;</pre> <p>See <a href="Node.html#method-i-5B-5D">#[]</a> and Nokogiri::XML#[]= for more information.</p> <p><a href="Node.html">Nokogiri::XML::Node</a> also has methods that let you move around your tree. For navigating your tree, see:</p> <ul><li> <p><a href="Node.html#method-i-parent">#parent</a></p> </li><li> <p><a href="Node.html#method-i-children">#children</a></p> </li><li> <p><a href="Node.html#method-i-next">#next</a></p> </li><li> <p><a href="Node.html#method-i-previous">#previous</a></p> </li></ul> <p>When printing or otherwise emitting a document or a node (and its subtree), there are a few methods you might want to use:</p> <ul><li> <p>content, text, <a href="Node.html#method-i-inner_text">#inner_text</a>, <a href="Node.html#method-i-to_str">#to_str</a>: emit plaintext</p> <p>These methods will all emit the plaintext version of your document, meaning that entities will be replaced (e.g., “&amp;lt;” will be replaced with “&lt;”), meaning that any sanitizing will likely be un-done in the output.</p> </li><li> <p><a href="Node.html#method-i-to_s">#to_s</a>, <a href="Node.html#method-i-to_xml">#to_xml</a>, <a href="Node.html#method-i-to_html">#to_html</a>, <a href="Node.html#method-i-inner_html">#inner_html</a>: emit well-formed markup</p> <p>These methods will all emit properly-escaped markup, meaning that it&#39;s suitable for consumption by browsers, parsers, etc.</p> </li></ul> <p>You may search this node&#39;s subtree using <a href="Searchable.html#method-i-xpath">Nokogiri::XML::Searchable#xpath</a> and <a href="Searchable.html#method-i-css">Nokogiri::XML::Searchable#css</a></p> </section> <section id="5Buntitled-5D" class="documentation-section"> <section class="constants-list"> <header> <h3>Constants</h3> </header> <dl> <dt id="ATTRIBUTE_DECL">ATTRIBUTE_DECL <dd><p>Attribute declaration type</p> <dt id="ATTRIBUTE_NODE">ATTRIBUTE_NODE <dd><p>Attribute node type</p> <dt id="CDATA_SECTION_NODE">CDATA_SECTION_NODE <dd><p><a href="CDATA.html">CDATA</a> node type, see <a href="Node.html#method-i-cdata-3F">#cdata?</a></p> <dt id="COMMENT_NODE">COMMENT_NODE <dd><p><a href="Comment.html">Comment</a> node type, see <a href="Node.html#method-i-comment-3F">#comment?</a></p> <dt id="DOCB_DOCUMENT_NODE">DOCB_DOCUMENT_NODE <dd><p>DOCB document node type</p> <dt id="DOCUMENT_FRAG_NODE">DOCUMENT_FRAG_NODE <dd><p><a href="Document.html">Document</a> fragment node type</p> <dt id="DOCUMENT_NODE">DOCUMENT_NODE <dd><p><a href="Document.html">Document</a> node type, see <a href="Node.html#method-i-xml-3F">#xml?</a></p> <dt id="DOCUMENT_TYPE_NODE">DOCUMENT_TYPE_NODE <dd><p><a href="Document.html">Document</a> type node type</p> <dt id="DTD_NODE">DTD_NODE <dd><p><a href="DTD.html">DTD</a> node type</p> <dt id="ELEMENT_DECL">ELEMENT_DECL <dd><p><a href="Element.html">Element</a> declaration type</p> <dt id="ELEMENT_NODE">ELEMENT_NODE <dd><p><a href="Element.html">Element</a> node type, see <a href="Node.html#method-i-element-3F">#element?</a></p> <dt id="ENTITY_DECL">ENTITY_DECL <dd><p>Entity declaration type</p> <dt id="ENTITY_NODE">ENTITY_NODE <dd><p>Entity node type</p> <dt id="ENTITY_REF_NODE">ENTITY_REF_NODE <dd><p>Entity reference node type</p> <dt id="HTML_DOCUMENT_NODE">HTML_DOCUMENT_NODE <dd><p><a href="../HTML.html">HTML</a> document node type, see <a href="Node.html#method-i-html-3F">#html?</a></p> <dt id="NAMESPACE_DECL">NAMESPACE_DECL <dd><p><a href="Namespace.html">Namespace</a> declaration type</p> <dt id="NOTATION_NODE">NOTATION_NODE <dd><p><a href="Notation.html">Notation</a> node type</p> <dt id="PI_NODE">PI_NODE <dd><p>PI node type</p> <dt id="TEXT_NODE">TEXT_NODE <dd><p><a href="Text.html">Text</a> node type, see <a href="Node.html#method-i-text-3F">#text?</a></p> <dt id="XINCLUDE_END">XINCLUDE_END <dd><p>XInclude end type</p> <dt id="XINCLUDE_START">XINCLUDE_START <dd><p>XInclude start type</p> </dl> </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(name, document) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a new node with <code>name</code> sharing GC lifecycle with <code>document</code></p> <div class="method-source-code" id="new-source"> <pre>static VALUE new(int argc, VALUE *argv, VALUE klass) { xmlDocPtr doc; xmlNodePtr node; VALUE name; VALUE document; VALUE rest; VALUE rb_node; rb_scan_args(argc, argv, &quot;2*&quot;, &amp;name, &amp;document, &amp;rest); Data_Get_Struct(document, xmlDoc, doc); node = xmlNewNode(NULL, (xmlChar *)StringValueCStr(name)); node-&gt;doc = doc-&gt;doc; nokogiri_root_node(node); rb_node = Nokogiri_wrap_xml_node( klass == cNokogiriXmlNode ? (VALUE)NULL : klass, node ); rb_obj_call_init(rb_node, argc, argv); if(rb_block_given_p()) { rb_yield(rb_node); } return rb_node; }</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 "> <div class="method-heading"> <span class="method-name">&lt;&lt;</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Add <code>node_or_tags</code> as a child of this <a href="Node.html">Node</a>. <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns self, to support chaining of calls (e.g., root &lt;&lt; child1 &lt;&lt; child2)</p> <p>Also see related method <code>add_child</code>.</p> <div class="method-source-code" id="3C-3C-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 182</span> <span class="ruby-keyword">def</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">add_child</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-3C-3D-3E" class="method-detail "> <div class="method-heading"> <span class="method-name">&lt;=&gt;</span><span class="method-args">(other)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Compare two <a href="Node.html">Node</a> objects with respect to their <a href="Document.html">Document</a>. Nodes from different documents cannot be compared.</p> <div class="method-source-code" id="3C-3D-3E-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 799</span> <span class="ruby-keyword">def</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">other</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">is_a?</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">Node</span>) <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">document</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">document</span> <span class="ruby-identifier">compare</span> <span class="ruby-identifier">other</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-3D-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">==</span><span class="method-args">(other)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Test to see if this <a href="Node.html">Node</a> is equal to <code>other</code></p> <div class="method-source-code" id="3D-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 666</span> <span class="ruby-keyword">def</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">other</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:pointer_id</span>) <span class="ruby-identifier">pointer_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">pointer_id</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-3E" class="method-detail "> <div class="method-heading"> <span class="method-name">&gt;</span><span class="method-args">(selector)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Search this node&#39;s immediate children using <a href="../CSS.html">CSS</a> selector <code>selector</code></p> <div class="method-source-code" id="3E-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 112</span> <span class="ruby-keyword">def</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">selector</span> <span class="ruby-identifier">ns</span> = <span class="ruby-identifier">document</span>.<span class="ruby-identifier">root</span>.<span class="ruby-identifier">namespaces</span> <span class="ruby-identifier">xpath</span> <span class="ruby-constant">CSS</span>.<span class="ruby-identifier">xpath_for</span>(<span class="ruby-identifier">selector</span>, <span class="ruby-value">:prefix</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;./&quot;</span>, <span class="ruby-value">:ns</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ns</span>).<span class="ruby-identifier">first</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-5B-5D" class="method-detail "> <div class="method-heading"> <span class="method-name">[]</span><span class="method-args">(name)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the attribute value for the attribute <code>name</code></p> <div class="method-source-code" id="5B-5D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 119</span> <span class="ruby-keyword">def</span> <span class="ruby-operator">[]</span> <span class="ruby-identifier">name</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-keyword">end</span></pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-get_attribute">get_attribute</a>, <a href="Node.html#method-i-attr">attr</a> </div> </div> <div id="method-i-5B-5D-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">[]=</span><span class="method-args">(name, value)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the attribute value for the attribute <code>name</code> to <code>value</code></p> <div class="method-source-code" id="5B-5D-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 125</span> <span class="ruby-keyword">def</span> <span class="ruby-operator">[]=</span> <span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span> <span class="ruby-identifier">set</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-keyword">end</span></pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-set_attribute">set_attribute</a> </div> </div> <div id="method-i-accept" class="method-detail "> <div class="method-heading"> <span class="method-name">accept</span><span class="method-args">(visitor)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Accept a visitor. This method calls “visit” on <code>visitor</code> with self.</p> <div class="method-source-code" id="accept-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 660</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">accept</span> <span class="ruby-identifier">visitor</span> <span class="ruby-identifier">visitor</span>.<span class="ruby-identifier">visit</span>(<span class="ruby-keyword">self</span>) <span class="ruby-keyword">end</span></pre> </div> </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"> <p>Add <code>node_or_tags</code> as a child of this <a href="Node.html">Node</a>. <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns the reparented node (if <code>node_or_tags</code> is a <a href="Node.html">Node</a>), or <a href="NodeSet.html">NodeSet</a> (if <code>node_or_tags</code> is a <a href="DocumentFragment.html">DocumentFragment</a>, <a href="NodeSet.html">NodeSet</a>, or string).</p> <p>Also see related method +&lt;&lt;+.</p> <div class="method-source-code" id="add_child-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 136</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">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">node_or_tags</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">add_child_node_and_reparent_attrs</span> <span class="ruby-identifier">n</span> } <span class="ruby-keyword">else</span> <span class="ruby-identifier">add_child_node_and_reparent_attrs</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-add_class" class="method-detail "> <div class="method-heading"> <span class="method-name">add_class</span><span class="method-args">(name)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Add <code>name</code> to the “class” attribute value of this <a href="Node.html">Node</a> and return self. If the value is already in the current value, it is not added. If no “class” attribute exists yet, one is created with the given value.</p> <p>More than one class may be added at a time, separated by a space.</p> <div class="method-source-code" id="add_class-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 379</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_class</span> <span class="ruby-identifier">name</span> <span class="ruby-identifier">names</span> = <span class="ruby-identifier">classes</span> <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;class&#39;</span>] = (<span class="ruby-identifier">names</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">name</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/\S+/</span>) <span class="ruby-operator">-</span> <span class="ruby-identifier">names</span>)).<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &#39;</span>) <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-add_namespace" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">add_namespace</span><span class="method-args">(p1, p2)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-add_namespace_definition">add_namespace_definition</a> </div> </div> <div id="method-i-add_namespace_definition" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> add_namespace_definition(prefix, href) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Adds a namespace definition with <code>prefix</code> using <code>href</code> value. The result is as if parsed <a href="../XML.html">XML</a> for this node had included an attribute &#39;xmlns:prefix=value&#39;. A default namespace for this node (“xmlns=”) can be added by passing &#39;nil&#39; for prefix. Namespaces added this way will not show up in <a href="Node.html#method-i-attributes">attributes</a>, but they will be included as an xmlns attribute when the node is serialized to <a href="../XML.html">XML</a>.</p> <div class="method-source-code" id="add_namespace_definition-source"> <pre>static VALUE add_namespace_definition(VALUE self, VALUE prefix, VALUE href) { xmlNodePtr node, namespace; xmlNsPtr ns; Data_Get_Struct(self, xmlNode, node); namespace = node ; ns = xmlSearchNs( node-&gt;doc, node, (const xmlChar *)(NIL_P(prefix) ? NULL : StringValueCStr(prefix)) ); if(!ns) { if (node-&gt;type != XML_ELEMENT_NODE) { namespace = node-&gt;parent; } ns = xmlNewNs( namespace, (const xmlChar *)StringValueCStr(href), (const xmlChar *)(NIL_P(prefix) ? NULL : StringValueCStr(prefix)) ); } if (!ns) { return Qnil ; } if(NIL_P(prefix) || node != namespace) { xmlSetNs(node, ns); } return Nokogiri_wrap_xml_namespace(node-&gt;doc, ns); }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-add_namespace">add_namespace</a> </div> </div> <div id="method-i-add_next_sibling" class="method-detail "> <div class="method-heading"> <span class="method-name">add_next_sibling</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Insert <code>node_or_tags</code> after this <a href="Node.html">Node</a> (as a sibling). <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns the reparented node (if <code>node_or_tags</code> is a <a href="Node.html">Node</a>), or <a href="NodeSet.html">NodeSet</a> (if <code>node_or_tags</code> is a <a href="DocumentFragment.html">DocumentFragment</a>, <a href="NodeSet.html">NodeSet</a>, or string).</p> <p>Also see related method <code>after</code>.</p> <div class="method-source-code" id="add_next_sibling-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 207</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_next_sibling</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</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">parent</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">document?</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">add_sibling</span> <span class="ruby-value">:next</span>, <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-add_previous_sibling" class="method-detail "> <div class="method-heading"> <span class="method-name">add_previous_sibling</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Insert <code>node_or_tags</code> before this <a href="Node.html">Node</a> (as a sibling). <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns the reparented node (if <code>node_or_tags</code> is a <a href="Node.html">Node</a>), or <a href="NodeSet.html">NodeSet</a> (if <code>node_or_tags</code> is a <a href="DocumentFragment.html">DocumentFragment</a>, <a href="NodeSet.html">NodeSet</a>, or string).</p> <p>Also see related method <code>before</code>.</p> <div class="method-source-code" id="add_previous_sibling-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 194</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_previous_sibling</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</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">parent</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">document?</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">add_sibling</span> <span class="ruby-value">:previous</span>, <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span></pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-previous-3D">previous=</a> </div> </div> <div id="method-i-after" class="method-detail "> <div class="method-heading"> <span class="method-name">after</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Insert <code>node_or_tags</code> after this node (as a sibling). <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a <a href="DocumentFragment.html">Nokogiri::XML::DocumentFragment</a>, or a string containing markup.</p> <p>Returns self, to support chaining of calls.</p> <p>Also see related method <code>add_next_sibling</code>.</p> <div class="method-source-code" id="after-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 232</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">after</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">add_next_sibling</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-ancestors" class="method-detail "> <div class="method-heading"> <span class="method-name">ancestors</span><span class="method-args">(selector = nil)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get a list of ancestor <a href="Node.html">Node</a> for this <a href="Node.html">Node</a>. If <code>selector</code> is given, the ancestors must match <code>selector</code></p> <div class="method-source-code" id="ancestors-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 600</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">ancestors</span> <span class="ruby-identifier">selector</span> = <span class="ruby-keyword">nil</span> <span class="ruby-keyword">return</span> <span class="ruby-constant">NodeSet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">document</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:parent</span>) <span class="ruby-keyword">return</span> <span class="ruby-constant">NodeSet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">document</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">parent</span> <span class="ruby-identifier">parents</span> = [<span class="ruby-identifier">parent</span>] <span class="ruby-keyword">while</span> <span class="ruby-identifier">parents</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:parent</span>) <span class="ruby-keyword">break</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">ctx_parent</span> = <span class="ruby-identifier">parents</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">parent</span> <span class="ruby-identifier">parents</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">ctx_parent</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">return</span> <span class="ruby-constant">NodeSet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">document</span>, <span class="ruby-identifier">parents</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">selector</span> <span class="ruby-identifier">root</span> = <span class="ruby-identifier">parents</span>.<span class="ruby-identifier">last</span> <span class="ruby-identifier">search_results</span> = <span class="ruby-identifier">root</span>.<span class="ruby-identifier">search</span>(<span class="ruby-identifier">selector</span>) <span class="ruby-constant">NodeSet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">document</span>, <span class="ruby-identifier">parents</span>.<span class="ruby-identifier">find_all</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">parent</span><span class="ruby-operator">|</span> <span class="ruby-identifier">search_results</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">parent</span>) }) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-append_class" class="method-detail "> <div class="method-heading"> <span class="method-name">append_class</span><span class="method-args">(name)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Append <code>name</code> to the “class” attribute value of this <a href="Node.html">Node</a> and return self. The value is simply appended without checking if it is already in the current value. If no “class” attribute exists yet, one is created with the given value.</p> <p>More than one class may be appended at a time, separated by a space.</p> <div class="method-source-code" id="append_class-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 393</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">append_class</span> <span class="ruby-identifier">name</span> <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;class&#39;</span>] = (<span class="ruby-identifier">classes</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/\S+/</span>)).<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &#39;</span>) <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-attr" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">attr</span><span class="method-args">(name)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-5B-5D">[]</a> </div> </div> <div id="method-i-attribute" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> attribute(name) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the attribute node with <code>name</code></p> <div class="method-source-code" id="attribute-source"> <pre>static VALUE attr(VALUE self, VALUE name) { xmlNodePtr node; xmlAttrPtr prop; Data_Get_Struct(self, xmlNode, node); prop = xmlHasProp(node, (xmlChar *)StringValueCStr(name)); if(! prop) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop); }</pre> </div> </div> </div> <div id="method-i-attribute_nodes" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> attribute_nodes() </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>returns a list containing the <a href="Node.html">Node</a> attributes.</p> <div class="method-source-code" id="attribute_nodes-source"> <pre>static VALUE attribute_nodes(VALUE self) { /* this code in the mode of xmlHasProp() */ xmlNodePtr node; VALUE attr; Data_Get_Struct(self, xmlNode, node); attr = rb_ary_new(); Nokogiri_xml_node_properties(node, attr); return attr ; }</pre> </div> </div> </div> <div id="method-i-attribute_with_ns" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> attribute_with_ns(name, namespace) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the attribute node with <code>name</code> and <code>namespace</code></p> <div class="method-source-code" id="attribute_with_ns-source"> <pre>static VALUE attribute_with_ns(VALUE self, VALUE name, VALUE namespace) { xmlNodePtr node; xmlAttrPtr prop; Data_Get_Struct(self, xmlNode, node); prop = xmlHasNsProp(node, (xmlChar *)StringValueCStr(name), NIL_P(namespace) ? NULL : (xmlChar *)StringValueCStr(namespace)); if(! prop) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop); }</pre> </div> </div> </div> <div id="method-i-attributes" class="method-detail "> <div class="method-heading"> <span class="method-name">attributes</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns a hash containing the node&#39;s attributes. The key is the attribute name without any namespace, the value is a <a href="Attr.html">Nokogiri::XML::Attr</a> representing the attribute. If you need to distinguish attributes with the same name, with different namespaces use <a href="Node.html#method-i-attribute_nodes">attribute_nodes</a> instead.</p> <div class="method-source-code" id="attributes-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 338</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">attributes</span> <span class="ruby-constant">Hash</span>[<span class="ruby-identifier">attribute_nodes</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">node</span><span class="ruby-operator">|</span> [<span class="ruby-identifier">node</span>.<span class="ruby-identifier">node_name</span>, <span class="ruby-identifier">node</span>] }] <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-before" class="method-detail "> <div class="method-heading"> <span class="method-name">before</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Insert <code>node_or_tags</code> before this node (as a sibling). <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns self, to support chaining of calls.</p> <p>Also see related method <code>add_previous_sibling</code>.</p> <div class="method-source-code" id="before-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 220</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">before</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">add_previous_sibling</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-blank-3F" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> blank? </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Is this node blank?</p> <div class="method-source-code" id="blank-3F-source"> <pre>static VALUE blank_eh(VALUE self) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); return (1 == xmlIsBlankNode(node)) ? Qtrue : Qfalse ; }</pre> </div> </div> </div> <div id="method-i-canonicalize" class="method-detail "> <div class="method-heading"> <span class="method-name">canonicalize</span><span class="method-args">(mode=XML::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-description"> <div class="method-source-code" id="canonicalize-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 819</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">canonicalize</span>(<span class="ruby-identifier">mode</span>=<span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">XML_C14N_1_0</span>,<span class="ruby-identifier">inclusive_namespaces</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">with_comments</span>=<span class="ruby-keyword">false</span>) <span class="ruby-identifier">c14n_root</span> = <span class="ruby-keyword">self</span> <span class="ruby-identifier">document</span>.<span class="ruby-identifier">canonicalize</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-identifier">inclusive_namespaces</span>, <span class="ruby-identifier">with_comments</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">node</span>, <span class="ruby-identifier">parent</span><span class="ruby-operator">|</span> <span class="ruby-identifier">tn</span> = <span class="ruby-identifier">node</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Node</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">node</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">parent</span> <span class="ruby-identifier">tn</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">c14n_root</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">tn</span>.<span class="ruby-identifier">ancestors</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">c14n_root</span>) <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-cdata-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">cdata?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is a <a href="CDATA.html">CDATA</a></p> <div class="method-source-code" id="cdata-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 523</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">cdata?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">CDATA_SECTION_NODE</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-child" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> child </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the child node</p> <div class="method-source-code" id="child-source"> <pre>static VALUE child(VALUE self) { xmlNodePtr node, child; Data_Get_Struct(self, xmlNode, node); child = node-&gt;children; if(!child) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, child); }</pre> </div> </div> </div> <div id="method-i-children" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> children </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the list of children for this node as a <a href="NodeSet.html">NodeSet</a></p> <div class="method-source-code" id="children-source"> <pre>static VALUE children(VALUE self) { xmlNodePtr node; xmlNodePtr child; xmlNodeSetPtr set; VALUE document; VALUE node_set; Data_Get_Struct(self, xmlNode, node); child = node-&gt;children; set = xmlXPathNodeSetCreate(child); document = DOC_RUBY_OBJECT(node-&gt;doc); if(!child) { return Nokogiri_wrap_xml_node_set(set, document); } child = child-&gt;next; while(NULL != child) { xmlXPathNodeSetAddUnique(set, child); child = child-&gt;next; } node_set = Nokogiri_wrap_xml_node_set(set, document); return node_set; }</pre> </div> </div> </div> <div id="method-i-children-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">children=</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the inner html for this <a href="Node.html">Node</a> <code>node_or_tags</code> <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a <a href="DocumentFragment.html">Nokogiri::XML::DocumentFragment</a>, or a string containing markup.</p> <p>Returns the reparented node (if <code>node_or_tags</code> is a <a href="Node.html">Node</a>), or <a href="NodeSet.html">NodeSet</a> (if <code>node_or_tags</code> is a <a href="DocumentFragment.html">DocumentFragment</a>, <a href="NodeSet.html">NodeSet</a>, or string).</p> <p>Also see related method <code>inner_html=</code></p> <div class="method-source-code" id="children-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 256</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">children=</span> <span class="ruby-identifier">node_or_tags</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-identifier">children</span>.<span class="ruby-identifier">unlink</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">node_or_tags</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">add_child_node_and_reparent_attrs</span> <span class="ruby-identifier">n</span> } <span class="ruby-keyword">else</span> <span class="ruby-identifier">add_child_node_and_reparent_attrs</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-classes" class="method-detail "> <div class="method-heading"> <span class="method-name">classes</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the list of class names of this <a href="Node.html">Node</a>, without deduplication or sorting.</p> <div class="method-source-code" id="classes-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 367</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">classes</span> <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;class&#39;</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/\S+/</span>) <span class="ruby-keyword">end</span></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, p2 = v2)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-dup">dup</a> </div> </div> <div id="method-i-comment-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">comment?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is a <a href="Comment.html">Comment</a></p> <div class="method-source-code" id="comment-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 518</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">comment?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">COMMENT_NODE</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-content" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> content </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the plaintext content for this <a href="Node.html">Node</a>. Note that entities will always be expanded in the returned string.</p> <div class="method-source-code" id="content-source"> <pre>static VALUE get_native_content(VALUE self) { xmlNodePtr node; xmlChar * content; Data_Get_Struct(self, xmlNode, node); content = xmlNodeGetContent(node); if(content) { VALUE rval = NOKOGIRI_STR_NEW2(content); xmlFree(content); return rval; } return Qnil; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-text">text</a>, <a href="Node.html#method-i-inner_text">inner_text</a> </div> </div> <div id="method-i-content-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">content=</span><span class="method-args">(string)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the Node&#39;s content to a <a href="Text.html">Text</a> node containing <code>string</code>. The string gets <a href="../XML.html">XML</a> escaped, not interpreted as markup.</p> <div class="method-source-code" id="content-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 485</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">content=</span> <span class="ruby-identifier">string</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">native_content</span> = <span class="ruby-identifier">encode_special_chars</span>(<span class="ruby-identifier">string</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-create_external_subset" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> create_external_subset(name, external_id, system_id) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create an external subset</p> <div class="method-source-code" id="create_external_subset-source"> <pre>static VALUE create_external_subset(VALUE self, VALUE name, VALUE external_id, VALUE system_id) { xmlNodePtr node; xmlDocPtr doc; xmlDtdPtr dtd; Data_Get_Struct(self, xmlNode, node); doc = node-&gt;doc; if(doc-&gt;extSubset) { rb_raise(rb_eRuntimeError, &quot;Document already has an external subset&quot;); } dtd = xmlNewDtd( doc, NIL_P(name) ? NULL : (const xmlChar *)StringValueCStr(name), NIL_P(external_id) ? NULL : (const xmlChar *)StringValueCStr(external_id), NIL_P(system_id) ? NULL : (const xmlChar *)StringValueCStr(system_id) ); if(!dtd) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd); }</pre> </div> </div> </div> <div id="method-i-create_internal_subset" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> create_internal_subset(name, external_id, system_id) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create the internal subset of a document.</p> <pre class="ruby"><span class="ruby-identifier">doc</span>.<span class="ruby-identifier">create_internal_subset</span>(<span class="ruby-string">&quot;chapter&quot;</span>, <span class="ruby-string">&quot;-//OASIS//DTD DocBook XML//EN&quot;</span>, <span class="ruby-string">&quot;chapter.dtd&quot;</span>) <span class="ruby-comment"># =&gt; &lt;!DOCTYPE chapter PUBLIC &quot;-//OASIS//DTD DocBook XML//EN&quot; &quot;chapter.dtd&quot;&gt;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">create_internal_subset</span>(<span class="ruby-string">&quot;chapter&quot;</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-string">&quot;chapter.dtd&quot;</span>) <span class="ruby-comment"># =&gt; &lt;!DOCTYPE chapter SYSTEM &quot;chapter.dtd&quot;&gt;</span> </pre> <div class="method-source-code" id="create_internal_subset-source"> <pre>static VALUE create_internal_subset(VALUE self, VALUE name, VALUE external_id, VALUE system_id) { xmlNodePtr node; xmlDocPtr doc; xmlDtdPtr dtd; Data_Get_Struct(self, xmlNode, node); doc = node-&gt;doc; if(xmlGetIntSubset(doc)) { rb_raise(rb_eRuntimeError, &quot;Document already has an internal subset&quot;); } dtd = xmlCreateIntSubset( doc, NIL_P(name) ? NULL : (const xmlChar *)StringValueCStr(name), NIL_P(external_id) ? NULL : (const xmlChar *)StringValueCStr(external_id), NIL_P(system_id) ? NULL : (const xmlChar *)StringValueCStr(system_id) ); if(!dtd) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd); }</pre> </div> </div> </div> <div id="method-i-css_path" class="method-detail "> <div class="method-heading"> <span class="method-name">css_path</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the path to this node as a <a href="../CSS.html">CSS</a> expression</p> <div class="method-source-code" id="css_path-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 591</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">css_path</span> <span class="ruby-identifier">path</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/\//</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">part</span><span class="ruby-operator">|</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">nil</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">part</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\[(\d+)\]/</span>, <span class="ruby-string">&#39;:nth-of-type(\1)&#39;</span>) }.<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &gt; &#39;</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-decorate-21" class="method-detail "> <div class="method-heading"> <span class="method-name">decorate!</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Decorate this node with the decorators set up in this node&#39;s <a href="Document.html">Document</a></p> <div class="method-source-code" id="decorate-21-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 106</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">decorate!</span> <span class="ruby-identifier">document</span>.<span class="ruby-identifier">decorate</span>(<span class="ruby-keyword">self</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-default_namespace-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">default_namespace=</span><span class="method-args">(url)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Adds a default namespace supplied as a string <code>url</code> href, to self. The consequence is as an xmlns attribute with supplied argument were present in parsed <a href="../XML.html">XML</a>. A default namespace set with this method will now show up in <a href="Node.html#method-i-attributes">attributes</a>, but when this node is serialized to <a href="../XML.html">XML</a> an “xmlns” attribute will appear. See also <a href="Node.html#method-i-namespace">namespace</a> and <a href="Node.html#method-i-namespace-3D">namespace=</a></p> <div class="method-source-code" id="default_namespace-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 627</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">default_namespace=</span> <span class="ruby-identifier">url</span> <span class="ruby-identifier">add_namespace_definition</span>(<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">url</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-delete" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">delete</span><span class="method-args">(name)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-remove_attribute">remove_attribute</a> </div> </div> <div id="method-i-description" class="method-detail "> <div class="method-heading"> <span class="method-name">description</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Fetch the <a href="../HTML/ElementDescription.html">Nokogiri::HTML::ElementDescription</a> for this node. Returns nil on <a href="../XML.html">XML</a> documents and on unknown tags.</p> <div class="method-source-code" id="description-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 560</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">description</span> <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">document</span>.<span class="ruby-identifier">xml?</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">HTML</span><span class="ruby-operator">::</span><span class="ruby-constant">ElementDescription</span>[<span class="ruby-identifier">name</span>] <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-do_xinclude" class="method-detail "> <div class="method-heading"> <span class="method-name">do_xinclude</span><span class="method-args">(options = XML::ParseOptions::DEFAULT_XML) { |options| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Do xinclude substitution on the subtree below node. If given a block, a <a href="ParseOptions.html">Nokogiri::XML::ParseOptions</a> object initialized from <code>options</code>, will be passed to it, allowing more convenient modification of the parser options.</p> <div class="method-source-code" id="do_xinclude-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 809</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">do_xinclude</span> <span class="ruby-identifier">options</span> = <span class="ruby-constant">XML</span><span class="ruby-operator">::</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 options to 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-comment"># call c extension</span> <span class="ruby-identifier">process_xincludes</span>(<span class="ruby-identifier">options</span>.<span class="ruby-identifier">to_i</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-callseq"> document </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the document for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="document-source"> <pre>static VALUE document(VALUE self) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); return DOC_RUBY_OBJECT(node-&gt;doc); }</pre> </div> </div> </div> <div id="method-i-document-3F" 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>Returns true if this is a <a href="Document.html">Document</a></p> <div class="method-source-code" id="document-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 538</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">document?</span> <span class="ruby-identifier">is_a?</span> <span class="ruby-constant">XML</span><span class="ruby-operator">::</span><span class="ruby-constant">Document</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-heading"> <span class="method-callseq"> dup(depth) </span> </div> <div class="method-heading"> <span class="method-callseq"> dup(depth, new_parent_doc) </span> </div> <div class="method-description"> <p>Copy this node. An optional depth may be passed in. 0 is a shallow copy, 1 (the default) is a deep copy. An optional new_parent_doc may also be passed in, which will be the new node&#39;s parent document. Defaults to the current node&#39;s document. current document.</p> <div class="method-source-code" id="dup-source"> <pre>static VALUE duplicate_node(int argc, VALUE *argv, VALUE self) { VALUE r_level, r_new_parent_doc; int level; int n_args; xmlDocPtr new_parent_doc; xmlNodePtr node, dup; Data_Get_Struct(self, xmlNode, node); n_args = rb_scan_args(argc, argv, &quot;02&quot;, &amp;r_level, &amp;r_new_parent_doc); if (n_args &lt; 1) { r_level = INT2NUM((long)1); } level = (int)NUM2INT(r_level); if (n_args &lt; 2) { new_parent_doc = node-&gt;doc; } else { Data_Get_Struct(r_new_parent_doc, xmlDoc, new_parent_doc); } dup = xmlDocCopyNode(node, new_parent_doc, level); if(dup == NULL) { return Qnil; } nokogiri_root_node(dup); return Nokogiri_wrap_xml_node(rb_obj_class(self), dup); }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-clone">clone</a> </div> </div> <div id="method-i-each" class="method-detail "> <div class="method-heading"> <span class="method-name">each</span><span class="method-args">() { |node_name, value| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Iterate over each attribute name and value pair for this <a href="Node.html">Node</a>.</p> <div class="method-source-code" id="each-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 358</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">each</span> <span class="ruby-identifier">attribute_nodes</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">node</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> [<span class="ruby-identifier">node</span>.<span class="ruby-identifier">node_name</span>, <span class="ruby-identifier">node</span>.<span class="ruby-identifier">value</span>] } <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-elem-3F" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">elem?</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-element-3F">element?</a> </div> </div> <div id="method-i-element-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">element?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is an <a href="Element.html">Element</a> node</p> <div class="method-source-code" id="element-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 573</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">element?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">ELEMENT_NODE</span> <span class="ruby-keyword">end</span></pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-elem-3F">elem?</a> </div> </div> <div id="method-i-element_children" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> element_children </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the list of children for this node as a <a href="NodeSet.html">NodeSet</a>. All nodes will be element nodes.</p> <p>Example:</p> <pre class="ruby"><span class="ruby-ivar">@doc</span>.<span class="ruby-identifier">root</span>.<span class="ruby-identifier">element_children</span>.<span class="ruby-identifier">all?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">element?</span> } <span class="ruby-comment"># =&gt; true</span> </pre> <div class="method-source-code" id="element_children-source"> <pre>static VALUE element_children(VALUE self) { xmlNodePtr node; xmlNodePtr child; xmlNodeSetPtr set; VALUE document; VALUE node_set; Data_Get_Struct(self, xmlNode, node); child = xmlFirstElementChild(node); set = xmlXPathNodeSetCreate(child); document = DOC_RUBY_OBJECT(node-&gt;doc); if(!child) { return Nokogiri_wrap_xml_node_set(set, document); } child = xmlNextElementSibling(child); while(NULL != child) { xmlXPathNodeSetAddUnique(set, child); child = xmlNextElementSibling(child); } node_set = Nokogiri_wrap_xml_node_set(set, document); return node_set; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-elements">elements</a> </div> </div> <div id="method-i-elements" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">elements</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-element_children">element_children</a> </div> </div> <div id="method-i-encode_special_chars" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> encode_special_chars(string) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Encode any special characters in <code>string</code></p> <div class="method-source-code" id="encode_special_chars-source"> <pre>static VALUE encode_special_chars(VALUE self, VALUE string) { xmlNodePtr node; xmlChar *encoded; VALUE encoded_str; Data_Get_Struct(self, xmlNode, node); encoded = xmlEncodeSpecialChars( node-&gt;doc, (const xmlChar *)StringValueCStr(string) ); encoded_str = NOKOGIRI_STR_NEW2(encoded); xmlFree(encoded); return encoded_str; }</pre> </div> </div> </div> <div id="method-i-external_subset" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> external_subset </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the external subset</p> <div class="method-source-code" id="external_subset-source"> <pre>static VALUE external_subset(VALUE self) { xmlNodePtr node; xmlDocPtr doc; xmlDtdPtr dtd; Data_Get_Struct(self, xmlNode, node); if(!node-&gt;doc) { return Qnil; } doc = node-&gt;doc; dtd = doc-&gt;extSubset; if(!dtd) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd); }</pre> </div> </div> </div> <div id="method-i-first_element_child" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> first_element_child </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the first child node of this node that is an element.</p> <p>Example:</p> <pre class="ruby"><span class="ruby-ivar">@doc</span>.<span class="ruby-identifier">root</span>.<span class="ruby-identifier">first_element_child</span>.<span class="ruby-identifier">element?</span> <span class="ruby-comment"># =&gt; true</span> </pre> <div class="method-source-code" id="first_element_child-source"> <pre>static VALUE first_element_child(VALUE self) { xmlNodePtr node, child; Data_Get_Struct(self, xmlNode, node); child = xmlFirstElementChild(node); if(!child) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, child); }</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)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Create a <a href="DocumentFragment.html">DocumentFragment</a> containing <code>tags</code> that is relative to <em>this</em> context node.</p> <div class="method-source-code" id="fragment-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 440</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">fragment</span> <span class="ruby-identifier">tags</span> <span class="ruby-identifier">type</span> = <span class="ruby-identifier">document</span>.<span class="ruby-identifier">html?</span> <span class="ruby-operator">?</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">HTML</span> <span class="ruby-operator">:</span> <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">XML</span> <span class="ruby-identifier">type</span><span class="ruby-operator">::</span><span class="ruby-constant">DocumentFragment</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">document</span>, <span class="ruby-identifier">tags</span>, <span class="ruby-keyword">self</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-fragment-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">fragment?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is a <a href="DocumentFragment.html">DocumentFragment</a></p> <div class="method-source-code" id="fragment-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 553</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">fragment?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">DOCUMENT_FRAG_NODE</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-get_attribute" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">get_attribute</span><span class="method-args">(name)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-5B-5D">[]</a> </div> </div> <div id="method-i-has_attribute-3F" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">has_attribute?</span><span class="method-args">(p1)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-key-3F">key?</a> </div> </div> <div id="method-i-html-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">html?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is an <a href="../HTML/Document.html">HTML::Document</a> node</p> <div class="method-source-code" id="html-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 533</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">html?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">HTML_DOCUMENT_NODE</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-inner_html" class="method-detail "> <div class="method-heading"> <span class="method-name">inner_html</span><span class="method-args">(*args)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the <a href="Node.html#method-i-inner_html">#inner_html</a> for this node&#39;s <a href="Node.html#method-i-children">#children</a></p> <div class="method-source-code" id="inner_html-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 586</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">inner_html</span> <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> <span class="ruby-identifier">children</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_html</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>) }.<span class="ruby-identifier">join</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-inner_html-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">inner_html=</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the inner html for this <a href="Node.html">Node</a> to <code>node_or_tags</code> <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a <a href="DocumentFragment.html">Nokogiri::XML::DocumentFragment</a>, or a string containing markup.</p> <p>Returns self.</p> <p>Also see related method <code>children=</code></p> <div class="method-source-code" id="inner_html-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 244</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">inner_html=</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">children</span> = <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-inner_text" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">inner_text</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-content">content</a> </div> </div> <div id="method-i-internal_subset" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> internal_subset </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the internal subset</p> <div class="method-source-code" id="internal_subset-source"> <pre>static VALUE internal_subset(VALUE self) { xmlNodePtr node; xmlDocPtr doc; xmlDtdPtr dtd; Data_Get_Struct(self, xmlNode, node); if(!node-&gt;doc) { return Qnil; } doc = node-&gt;doc; dtd = xmlGetIntSubset(doc); if(!dtd) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd); }</pre> </div> </div> </div> <div id="method-i-key-3F" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> key?(attribute) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if <code>attribute</code> is set</p> <div class="method-source-code" id="key-3F-source"> <pre>static VALUE key_eh(VALUE self, VALUE attribute) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); if(xmlHasProp(node, (xmlChar *)StringValueCStr(attribute))) { return Qtrue; } return Qfalse; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-has_attribute-3F">has_attribute?</a> </div> </div> <div id="method-i-keys" class="method-detail "> <div class="method-heading"> <span class="method-name">keys</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the attribute names for this <a href="Node.html">Node</a>.</p> <div class="method-source-code" id="keys-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 352</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">keys</span> <span class="ruby-identifier">attribute_nodes</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:node_name</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-lang" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> lang </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Searches the language of a node, i.e. the values of the xml:lang attribute or the one carried by the nearest ancestor.</p> <div class="method-source-code" id="lang-source"> <pre>static VALUE get_lang(VALUE self_rb) { xmlNodePtr self ; xmlChar* lang ; VALUE lang_rb ; Data_Get_Struct(self_rb, xmlNode, self); lang = xmlNodeGetLang(self); if (lang) { lang_rb = NOKOGIRI_STR_NEW2(lang); xmlFree(lang); return lang_rb ; } return Qnil ; }</pre> </div> </div> </div> <div id="method-i-lang-3D" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> lang= </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the language of a node, i.e. the values of the xml:lang attribute.</p> <div class="method-source-code" id="lang-3D-source"> <pre>static VALUE set_lang(VALUE self_rb, VALUE lang_rb) { xmlNodePtr self ; xmlChar* lang ; Data_Get_Struct(self_rb, xmlNode, self); lang = (xmlChar*)StringValueCStr(lang_rb); xmlNodeSetLang(self, lang); return Qnil ; }</pre> </div> </div> </div> <div id="method-i-last_element_child" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> last_element_child </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the last child node of this node that is an element.</p> <p>Example:</p> <pre class="ruby"><span class="ruby-ivar">@doc</span>.<span class="ruby-identifier">root</span>.<span class="ruby-identifier">last_element_child</span>.<span class="ruby-identifier">element?</span> <span class="ruby-comment"># =&gt; true</span> </pre> <div class="method-source-code" id="last_element_child-source"> <pre>static VALUE last_element_child(VALUE self) { xmlNodePtr node, child; Data_Get_Struct(self, xmlNode, node); child = xmlLastElementChild(node); if(!child) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, child); }</pre> </div> </div> </div> <div id="method-i-line" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> line </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the line for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="line-source"> <pre>static VALUE line(VALUE self) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); return INT2NUM(xmlGetLineNo(node)); }</pre> </div> </div> </div> <div id="method-i-matches-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">matches?</span><span class="method-args">(selector)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this <a href="Node.html">Node</a> matches <code>selector</code></p> <div class="method-source-code" id="matches-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 433</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">matches?</span> <span class="ruby-identifier">selector</span> <span class="ruby-identifier">ancestors</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">search</span>(<span class="ruby-identifier">selector</span>).<span class="ruby-identifier">include?</span>(<span class="ruby-keyword">self</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-name" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">name</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-node_name">node_name</a> </div> </div> <div id="method-i-name-3D" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">name=</span><span class="method-args">(p1)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-node_name-3D">node_name=</a> </div> </div> <div id="method-i-namespace" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> namespace() </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>returns the namespace of the element or attribute node as a <a href="Namespace.html">Namespace</a> object, or nil if there is no namespace for the element or attribute.</p> <div class="method-source-code" id="namespace-source"> <pre>static VALUE namespace(VALUE self) { xmlNodePtr node ; Data_Get_Struct(self, xmlNode, node); if (node-&gt;ns) { return Nokogiri_wrap_xml_namespace(node-&gt;doc, node-&gt;ns); }</pre> </div> </div> </div> <div id="method-i-namespace-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">namespace=</span><span class="method-args">(ns)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the default namespace on this node (as would be defined with an “xmlns=” attribute in <a href="../XML.html">XML</a> source), as a <a href="Namespace.html">Namespace</a> object <code>ns</code>. Note that a <a href="Namespace.html">Namespace</a> added this way will NOT be serialized as an xmlns attribute for this node. You probably want <a href="Node.html#method-i-default_namespace-3D">default_namespace=</a> instead, or perhaps <a href="Node.html#method-i-add_namespace_definition">add_namespace_definition</a> with a nil prefix argument.</p> <div class="method-source-code" id="namespace-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 638</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">namespace=</span> <span class="ruby-identifier">ns</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">set_namespace</span>(<span class="ruby-identifier">ns</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">ns</span> <span class="ruby-keyword">unless</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">Namespace</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">ns</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;#{ns.class} can&#39;t be coerced into Nokogiri::XML::Namespace&quot;</span> <span class="ruby-keyword">end</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">document</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">document</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">&#39;namespace must be declared on the same document&#39;</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">set_namespace</span> <span class="ruby-identifier">ns</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-namespace_definitions" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> namespace_definitions() </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>returns namespaces defined on self element directly, as an array of <a href="Namespace.html">Namespace</a> objects. Includes both a default namespace (as in“xmlns=”), and prefixed namespaces (as in “xmlns:prefix=”).</p> <div class="method-source-code" id="namespace_definitions-source"> <pre>static VALUE namespace_definitions(VALUE self) { /* this code in the mode of xmlHasProp() */ xmlNodePtr node ; VALUE list; xmlNsPtr ns; Data_Get_Struct(self, xmlNode, node); list = rb_ary_new(); ns = node-&gt;nsDef; if(!ns) { return list; } while(NULL != ns) { rb_ary_push(list, Nokogiri_wrap_xml_namespace(node-&gt;doc, ns)); ns = ns-&gt;next; } return list; }</pre> </div> </div> </div> <div id="method-i-namespace_scopes" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> namespace_scopes() </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>returns namespaces in scope for self – those defined on self element directly or any ancestor node – as an array of <a href="Namespace.html">Namespace</a> objects. Default namespaces (“xmlns=” style) for self are included in this array; Default namespaces for ancestors, however, are not. See also <a href="Node.html#method-i-namespaces">namespaces</a></p> <div class="method-source-code" id="namespace_scopes-source"> <pre>static VALUE namespace_scopes(VALUE self) { xmlNodePtr node ; VALUE list; xmlNsPtr *ns_list; int j; Data_Get_Struct(self, xmlNode, node); list = rb_ary_new(); ns_list = xmlGetNsList(node-&gt;doc, node); if(!ns_list) { return list; } for (j = 0 ; ns_list[j] != NULL ; ++j) { rb_ary_push(list, Nokogiri_wrap_xml_namespace(node-&gt;doc, ns_list[j])); } xmlFree(ns_list); return list; }</pre> </div> </div> </div> <div id="method-i-namespaced_key-3F" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> namespaced_key?(attribute, namespace) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if <code>attribute</code> is set with <code>namespace</code></p> <div class="method-source-code" id="namespaced_key-3F-source"> <pre>static VALUE namespaced_key_eh(VALUE self, VALUE attribute, VALUE namespace) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); if(xmlHasNsProp(node, (xmlChar *)StringValueCStr(attribute), NIL_P(namespace) ? NULL : (xmlChar *)StringValueCStr(namespace))) { return Qtrue; } return Qfalse; }</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>Returns a Hash of +{prefix =&gt; value}+ for all namespaces on this node and its ancestors.</p> <p>This method returns the same namespaces as <a href="Node.html#method-i-namespace_scopes">namespace_scopes</a>.</p> <p>Returns namespaces in scope for self – those defined on self element directly or any ancestor node – as a Hash of attribute-name/value pairs. Note that the keys in this hash <a href="../XML.html">XML</a> attributes that would be used to define this namespace, such as “xmlns:prefix”, not just the prefix. Default namespace set on self will be included with key “xmlns”. However, default namespaces set on ancestor will NOT be, even if self has no explicit default namespace.</p> <div class="method-source-code" id="namespaces-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 510</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">namespaces</span> <span class="ruby-constant">Hash</span>[<span class="ruby-identifier">namespace_scopes</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">nd</span><span class="ruby-operator">|</span> <span class="ruby-identifier">key</span> = [<span class="ruby-string">&#39;xmlns&#39;</span>, <span class="ruby-identifier">nd</span>.<span class="ruby-identifier">prefix</span>].<span class="ruby-identifier">compact</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39;:&#39;</span>) [<span class="ruby-identifier">key</span>, <span class="ruby-identifier">nd</span>.<span class="ruby-identifier">href</span>] }] <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-native_content-3D" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> content= </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the content for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="native_content-3D-source"> <pre>static VALUE set_native_content(VALUE self, VALUE content) { xmlNodePtr node, child, next ; Data_Get_Struct(self, xmlNode, node); child = node-&gt;children; while (NULL != child) { next = child-&gt;next ; xmlUnlinkNode(child) ; nokogiri_root_node(child); child = next ; } xmlNodeSetContent(node, (xmlChar *)StringValueCStr(content)); return content; }</pre> </div> </div> </div> <div id="method-i-next" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">next</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-next_sibling">next_sibling</a> </div> </div> <div id="method-i-next_element" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> next_element </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the next <a href="Element.html">Nokogiri::XML::Element</a> type sibling node.</p> <div class="method-source-code" id="next_element-source"> <pre>static VALUE next_element(VALUE self) { xmlNodePtr node, sibling; Data_Get_Struct(self, xmlNode, node); sibling = xmlNextElementSibling(node); if(!sibling) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, sibling); }</pre> </div> </div> </div> <div id="method-i-next_sibling" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> next_sibling </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the next sibling node</p> <div class="method-source-code" id="next_sibling-source"> <pre>static VALUE next_sibling(VALUE self) { xmlNodePtr node, sibling; Data_Get_Struct(self, xmlNode, node); sibling = node-&gt;next; if(!sibling) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, sibling) ; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-next">next</a> </div> </div> <div id="method-i-node_name" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> name </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the name for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="node_name-source"> <pre>static VALUE get_name(VALUE self) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); if(node-&gt;name) { return NOKOGIRI_STR_NEW2(node-&gt;name); } return Qnil; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-name">name</a> </div> </div> <div id="method-i-node_name-3D" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> name=(new_name) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the name for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="node_name-3D-source"> <pre>static VALUE set_name(VALUE self, VALUE new_name) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); xmlNodeSetName(node, (xmlChar*)StringValueCStr(new_name)); return new_name; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-name-3D">name=</a> </div> </div> <div id="method-i-node_type" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> node_type </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the type for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="node_type-source"> <pre>static VALUE node_type(VALUE self) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); return INT2NUM((long)node-&gt;type); }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-type">type</a> </div> </div> <div id="method-i-parent" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> parent </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the parent <a href="Node.html">Node</a> for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="parent-source"> <pre>static VALUE get_parent(VALUE self) { xmlNodePtr node, parent; Data_Get_Struct(self, xmlNode, node); parent = node-&gt;parent; if(!parent) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, parent) ; }</pre> </div> </div> </div> <div id="method-i-parent-3D" class="method-detail "> <div class="method-heading"> <span class="method-name">parent=</span><span class="method-args">(parent_node)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the parent <a href="Node.html">Node</a> for this <a href="Node.html">Node</a></p> <div class="method-source-code" id="parent-3D-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 491</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">parent=</span> <span class="ruby-identifier">parent_node</span> <span class="ruby-identifier">parent_node</span>.<span class="ruby-identifier">add_child</span>(<span class="ruby-keyword">self</span>) <span class="ruby-identifier">parent_node</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-parse" class="method-detail "> <div class="method-heading"> <span class="method-name">parse</span><span class="method-args">(string_or_io, options = nil) { |options| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Parse <code>string_or_io</code> as a document fragment within the context of <strong>this</strong> node. Returns a <a href="NodeSet.html">XML::NodeSet</a> containing the nodes parsed from <code>string_or_io</code>.</p> <div class="method-source-code" id="parse-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 449</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">parse</span> <span class="ruby-identifier">string_or_io</span>, <span class="ruby-identifier">options</span> = <span class="ruby-keyword">nil</span> <span class="ruby-comment">##</span> <span class="ruby-comment"># When the current node is unparented and not an element node, use the</span> <span class="ruby-comment"># document as the parsing context instead. Otherwise, the in-context</span> <span class="ruby-comment"># parser cannot find an element or a document node.</span> <span class="ruby-comment"># Document Fragments are also not usable by the in-context parser.</span> <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">element?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">document?</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">parent</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">fragment?</span>) <span class="ruby-keyword">return</span> <span class="ruby-identifier">document</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">string_or_io</span>, <span class="ruby-identifier">options</span>) <span class="ruby-keyword">end</span> <span class="ruby-identifier">options</span> <span class="ruby-operator">||=</span> (<span class="ruby-identifier">document</span>.<span class="ruby-identifier">html?</span> <span class="ruby-operator">?</span> <span class="ruby-constant">ParseOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_HTML</span> <span class="ruby-operator">:</span> <span class="ruby-constant">ParseOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_XML</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-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">end</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-identifier">contents</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-operator">?</span> <span class="ruby-identifier">string_or_io</span>.<span class="ruby-identifier">read</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">string_or_io</span> <span class="ruby-keyword">return</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">NodeSet</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">document</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">contents</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-comment">##</span> <span class="ruby-comment"># This is a horrible hack, but I don&#39;t care. See #313 for background.</span> <span class="ruby-identifier">error_count</span> = <span class="ruby-identifier">document</span>.<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">length</span> <span class="ruby-identifier">node_set</span> = <span class="ruby-identifier">in_context</span>(<span class="ruby-identifier">contents</span>, <span class="ruby-identifier">options</span>.<span class="ruby-identifier">to_i</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">node_set</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">document</span>.<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">error_count</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">recover?</span> <span class="ruby-identifier">fragment</span> = <span class="ruby-constant">Nokogiri</span><span class="ruby-operator">::</span><span class="ruby-constant">HTML</span><span class="ruby-operator">::</span><span class="ruby-constant">DocumentFragment</span>.<span class="ruby-identifier">parse</span> <span class="ruby-identifier">contents</span> <span class="ruby-identifier">node_set</span> = <span class="ruby-identifier">fragment</span>.<span class="ruby-identifier">children</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">node_set</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-path" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> path </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the path associated with this <a href="Node.html">Node</a></p> <div class="method-source-code" id="path-source"> <pre>static VALUE path(VALUE self) { xmlNodePtr node; xmlChar *path ; VALUE rval; Data_Get_Struct(self, xmlNode, node); path = xmlGetNodePath(node); rval = NOKOGIRI_STR_NEW2(path); xmlFree(path); return rval ; }</pre> </div> </div> </div> <div id="method-i-pointer_id" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> pointer_id </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the internal pointer number</p> <div class="method-source-code" id="pointer_id-source"> <pre>static VALUE pointer_id(VALUE self) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); return INT2NUM((long)(node)); }</pre> </div> </div> </div> <div id="method-i-prepend_child" class="method-detail "> <div class="method-heading"> <span class="method-name">prepend_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"> <p>Add <code>node_or_tags</code> as the first child of this <a href="Node.html">Node</a>. <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns the reparented node (if <code>node_or_tags</code> is a <a href="Node.html">Node</a>), or <a href="NodeSet.html">NodeSet</a> (if <code>node_or_tags</code> is a <a href="DocumentFragment.html">DocumentFragment</a>, <a href="NodeSet.html">NodeSet</a>, or string).</p> <p>Also see related method <code>add_child</code>.</p> <div class="method-source-code" id="prepend_child-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 153</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">prepend_child</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">first</span> = <span class="ruby-identifier">children</span>.<span class="ruby-identifier">first</span> <span class="ruby-comment"># Mimic the error add_child would raise.</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-string">&quot;Document already has a root node&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">document?</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">first</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-value">:add_sibling</span>, <span class="ruby-value">:previous</span>, <span class="ruby-identifier">node_or_tags</span>) <span class="ruby-keyword">else</span> <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">node_or_tags</span>) <span class="ruby-keyword">end</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-previous" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">previous</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-previous_sibling">previous_sibling</a> </div> </div> <div id="method-i-previous-3D" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">previous=</span><span class="method-args">(node_or_tags)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-add_previous_sibling">add_previous_sibling</a> </div> </div> <div id="method-i-previous_element" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> previous_element </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the previous <a href="Element.html">Nokogiri::XML::Element</a> type sibling node.</p> <div class="method-source-code" id="previous_element-source"> <pre>static VALUE previous_element(VALUE self) { xmlNodePtr node, sibling; Data_Get_Struct(self, xmlNode, node); /* * note that we don&#39;t use xmlPreviousElementSibling here because it&#39;s buggy pre-2.7.7. */ sibling = node-&gt;prev; if(!sibling) { return Qnil; } while(sibling &amp;&amp; sibling-&gt;type != XML_ELEMENT_NODE) { sibling = sibling-&gt;prev; } return sibling ? Nokogiri_wrap_xml_node(Qnil, sibling) : Qnil ; }</pre> </div> </div> </div> <div id="method-i-previous_sibling" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> previous_sibling </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the previous sibling node</p> <div class="method-source-code" id="previous_sibling-source"> <pre>static VALUE previous_sibling(VALUE self) { xmlNodePtr node, sibling; Data_Get_Struct(self, xmlNode, node); sibling = node-&gt;prev; if(!sibling) { return Qnil; } return Nokogiri_wrap_xml_node(Qnil, sibling); }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-previous">previous</a> </div> </div> <div id="method-i-processing_instruction-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">processing_instruction?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is a <a href="ProcessingInstruction.html">ProcessingInstruction</a> node</p> <div class="method-source-code" id="processing_instruction-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 543</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">processing_instruction?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">PI_NODE</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-read_only-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">read_only?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Is this a read only node?</p> <div class="method-source-code" id="read_only-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 567</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">read_only?</span> <span class="ruby-comment"># According to gdome2, these are read-only node types</span> [<span class="ruby-constant">NOTATION_NODE</span>, <span class="ruby-constant">ENTITY_NODE</span>, <span class="ruby-constant">ENTITY_DECL</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">type</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-remove" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">remove</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-unlink">unlink</a> </div> </div> <div id="method-i-remove_attribute" class="method-detail "> <div class="method-heading"> <span class="method-name">remove_attribute</span><span class="method-args">(name)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Remove the attribute named <code>name</code></p> <div class="method-source-code" id="remove_attribute-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 424</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">remove_attribute</span> <span class="ruby-identifier">name</span> <span class="ruby-identifier">attr</span> = <span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">remove</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">key?</span> <span class="ruby-identifier">name</span> <span class="ruby-identifier">clear_xpath_context</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Nokogiri</span>.<span class="ruby-identifier">jruby?</span> <span class="ruby-identifier">attr</span> <span class="ruby-keyword">end</span></pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-delete">delete</a> </div> </div> <div id="method-i-remove_class" class="method-detail "> <div class="method-heading"> <span class="method-name">remove_class</span><span class="method-args">(name = nil)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Remove <code>name</code> from the “class” attribute value of this <a href="Node.html">Node</a> and return self. If there are many occurrences of the name, they are all removed.</p> <p>More than one class may be removed at a time, separated by a space.</p> <p>If no class name is left after removal, or when <code>name</code> is nil, the “class” attribute is removed from this <a href="Node.html">Node</a>.</p> <div class="method-source-code" id="remove_class-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 408</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">remove_class</span> <span class="ruby-identifier">name</span> = <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">name</span> <span class="ruby-identifier">names</span> = <span class="ruby-identifier">classes</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp">/\S+/</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">names</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-identifier">delete</span> <span class="ruby-string">&#39;class&#39;</span> <span class="ruby-keyword">else</span> <span class="ruby-keyword">self</span>[<span class="ruby-string">&#39;class&#39;</span>] = <span class="ruby-identifier">names</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &#39;</span>) <span class="ruby-keyword">end</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">delete</span> <span class="ruby-string">&quot;class&quot;</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-replace" class="method-detail "> <div class="method-heading"> <span class="method-name">replace</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Replace this <a href="Node.html">Node</a> with <code>node_or_tags</code>. <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns the reparented node (if <code>node_or_tags</code> is a <a href="Node.html">Node</a>), or <a href="NodeSet.html">NodeSet</a> (if <code>node_or_tags</code> is a <a href="DocumentFragment.html">DocumentFragment</a>, <a href="NodeSet.html">NodeSet</a>, or string).</p> <p>Also see related method <code>swap</code>.</p> <div class="method-source-code" id="replace-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 274</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">replace</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-comment"># We cannot replace a text node directly, otherwise libxml will return</span> <span class="ruby-comment"># an internal error at parser.c:13031, I don&#39;t know exactly why</span> <span class="ruby-comment"># libxml is trying to find a parent node that is an element or document</span> <span class="ruby-comment"># so I can&#39;t tell if this is bug in libxml or not. issue #775.</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">text?</span> <span class="ruby-identifier">replacee</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">Node</span>.<span class="ruby-identifier">new</span> <span class="ruby-string">&#39;dummy&#39;</span>, <span class="ruby-identifier">document</span> <span class="ruby-identifier">add_previous_sibling_node</span> <span class="ruby-identifier">replacee</span> <span class="ruby-identifier">unlink</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">replacee</span>.<span class="ruby-identifier">replace</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</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">node_or_tags</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">add_previous_sibling</span> <span class="ruby-identifier">n</span> } <span class="ruby-identifier">unlink</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">replace_node</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-serialize" class="method-detail "> <div class="method-heading"> <span class="method-name">serialize</span><span class="method-args">(*args, &block)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Serialize <a href="Node.html">Node</a> using <code>options</code>. Save options can also be set using a block. See <a href="Node/SaveOptions.html">SaveOptions</a>.</p> <p>These two statements are equivalent:</p> <pre class="ruby"><span class="ruby-identifier">node</span>.<span class="ruby-identifier">serialize</span>(:<span class="ruby-identifier">encoding</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;UTF-8&#39;</span>, :<span class="ruby-identifier">save_with</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">FORMAT</span> <span class="ruby-operator">|</span> <span class="ruby-constant">AS_XML</span>) </pre> <p>or</p> <pre class="ruby"><span class="ruby-identifier">node</span>.<span class="ruby-identifier">serialize</span>(:<span class="ruby-identifier">encoding</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;UTF-8&#39;</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">config</span><span class="ruby-operator">|</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">format</span>.<span class="ruby-identifier">as_xml</span> <span class="ruby-keyword">end</span> </pre> <div class="method-source-code" id="serialize-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 686</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">serialize</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">options</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> { <span class="ruby-value">:encoding</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>], <span class="ruby-value">:save_with</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>] } <span class="ruby-identifier">encoding</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:encoding</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">document</span>.<span class="ruby-identifier">encoding</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:encoding</span>] = <span class="ruby-identifier">encoding</span> <span class="ruby-identifier">outstring</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">outstring</span>.<span class="ruby-identifier">force_encoding</span>(<span class="ruby-constant">Encoding</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">encoding</span> <span class="ruby-operator">||</span> <span class="ruby-string">&#39;utf-8&#39;</span>)) <span class="ruby-identifier">io</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">outstring</span>) <span class="ruby-identifier">write_to</span> <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-identifier">io</span>.<span class="ruby-identifier">string</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-set_attribute" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">set_attribute</span><span class="method-args">(name, value)</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-5B-5D-3D">[]=</a> </div> </div> <div id="method-i-swap" class="method-detail "> <div class="method-heading"> <span class="method-name">swap</span><span class="method-args">(node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Swap this <a href="Node.html">Node</a> for <code>node_or_tags</code> <code>node_or_tags</code> can be a <a href="Node.html">Nokogiri::XML::Node</a>, a ::DocumentFragment, a ::NodeSet, or a string containing markup.</p> <p>Returns self, to support chaining of calls.</p> <p>Also see related method <code>replace</code>.</p> <div class="method-source-code" id="swap-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 304</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">swap</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">replace</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-text" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">text</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-to_str">to_str</a> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-content">content</a> </div> </div> <div id="method-i-text-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">text?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is a <a href="Text.html">Text</a> node</p> <div class="method-source-code" id="text-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 548</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">text?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">TEXT_NODE</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-to_html" class="method-detail "> <div class="method-heading"> <span class="method-name">to_html</span><span class="method-args">(options = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Serialize this <a href="Node.html">Node</a> to <a href="../HTML.html">HTML</a></p> <pre class="ruby"><span class="ruby-identifier">doc</span>.<span class="ruby-identifier">to_html</span> </pre> <p>See <a href="Node.html#method-i-write_to">#write_to</a> for a list of <code>options</code>. For formatted output, use <a href="Node.html#method-i-to_xhtml">#to_xhtml</a> instead.</p> <div class="method-source-code" id="to_html-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 709</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_html</span> <span class="ruby-identifier">options</span> = {} <span class="ruby-identifier">to_format</span> <span class="ruby-constant">SaveOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_HTML</span>, <span class="ruby-identifier">options</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-to_s" class="method-detail "> <div class="method-heading"> <span class="method-name">to_s</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Turn this node in to a string. If the document is <a href="../HTML.html">HTML</a>, this method returns html. If the document is <a href="../XML.html">XML</a>, this method returns <a href="../XML.html">XML</a>.</p> <div class="method-source-code" id="to_s-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 581</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_s</span> <span class="ruby-identifier">document</span>.<span class="ruby-identifier">xml?</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">to_xml</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">to_html</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-to_str" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">to_str</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-text">text</a> </div> </div> <div id="method-i-to_xhtml" class="method-detail "> <div class="method-heading"> <span class="method-name">to_xhtml</span><span class="method-args">(options = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Serialize this <a href="Node.html">Node</a> to XHTML using <code>options</code></p> <pre class="ruby"><span class="ruby-identifier">doc</span>.<span class="ruby-identifier">to_xhtml</span>(:<span class="ruby-identifier">indent</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">5</span>, :<span class="ruby-identifier">encoding</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;UTF-8&#39;</span>) </pre> <p>See <a href="Node.html#method-i-write_to">#write_to</a> for a list of <code>options</code></p> <div class="method-source-code" id="to_xhtml-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 730</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_xhtml</span> <span class="ruby-identifier">options</span> = {} <span class="ruby-identifier">to_format</span> <span class="ruby-constant">SaveOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_XHTML</span>, <span class="ruby-identifier">options</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-to_xml" class="method-detail "> <div class="method-heading"> <span class="method-name">to_xml</span><span class="method-args">(options = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Serialize this <a href="Node.html">Node</a> to <a href="../XML.html">XML</a> using <code>options</code></p> <pre class="ruby"><span class="ruby-identifier">doc</span>.<span class="ruby-identifier">to_xml</span>(:<span class="ruby-identifier">indent</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">5</span>, :<span class="ruby-identifier">encoding</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;UTF-8&#39;</span>) </pre> <p>See <a href="Node.html#method-i-write_to">#write_to</a> for a list of <code>options</code></p> <div class="method-source-code" id="to_xml-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 719</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_xml</span> <span class="ruby-identifier">options</span> = {} <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_with</span>] <span class="ruby-operator">||=</span> <span class="ruby-constant">SaveOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_XML</span> <span class="ruby-identifier">serialize</span>(<span class="ruby-identifier">options</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-traverse" class="method-detail "> <div class="method-heading"> <span class="method-name">traverse</span><span class="method-args">(&block)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Yields self and all children to <code>block</code> recursively.</p> <div class="method-source-code" id="traverse-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 653</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">traverse</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">j</span><span class="ruby-operator">|</span> <span class="ruby-identifier">j</span>.<span class="ruby-identifier">traverse</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>) } <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>(<span class="ruby-keyword">self</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-type" class="method-detail method-alias"> <div class="method-heading"> <span class="method-name">type</span><span class="method-args">()</span> </div> <div class="method-description"> </div> <div class="aliases"> Alias for: <a href="Node.html#method-i-node_type">node_type</a> </div> </div> <div id="method-i-unlink" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> unlink </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Unlink this node from its current context.</p> <div class="method-source-code" id="unlink-source"> <pre>static VALUE unlink_node(VALUE self) { xmlNodePtr node; Data_Get_Struct(self, xmlNode, node); xmlUnlinkNode(node); nokogiri_root_node(node); return self; }</pre> </div> </div> <div class="aliases"> Also aliased as: <a href="Node.html#method-i-remove">remove</a> </div> </div> <div id="method-i-values" class="method-detail "> <div class="method-heading"> <span class="method-name">values</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the attribute values for this <a href="Node.html">Node</a>.</p> <div class="method-source-code" id="values-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 346</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">values</span> <span class="ruby-identifier">attribute_nodes</span>.<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-value">:value</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-wrap" class="method-detail "> <div class="method-heading"> <span class="method-name">wrap</span><span class="method-args">(html)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Add html around this node</p> <p>Returns self</p> <div class="method-source-code" id="wrap-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 168</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">wrap</span>(<span class="ruby-identifier">html</span>) <span class="ruby-identifier">new_parent</span> = <span class="ruby-identifier">document</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">html</span>).<span class="ruby-identifier">first</span> <span class="ruby-identifier">add_next_sibling</span>(<span class="ruby-identifier">new_parent</span>) <span class="ruby-identifier">new_parent</span>.<span class="ruby-identifier">add_child</span>(<span class="ruby-keyword">self</span>) <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-write_html_to" class="method-detail "> <div class="method-heading"> <span class="method-name">write_html_to</span><span class="method-args">(io, options = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Write <a href="Node.html">Node</a> as <a href="../HTML.html">HTML</a> to <code>io</code> with <code>options</code></p> <p>See <a href="Node.html#method-i-write_to">#write_to</a> for a list of <code>options</code></p> <div class="method-source-code" id="write_html_to-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 773</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">write_html_to</span> <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span> = {} <span class="ruby-identifier">write_format_to</span> <span class="ruby-constant">SaveOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_HTML</span>, <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-write_to" class="method-detail "> <div class="method-heading"> <span class="method-name">write_to</span><span class="method-args">(io, *options) { |config| ... }</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Write <a href="Node.html">Node</a> to <code>io</code> with <code>options</code>. <code>options</code> modify the output of this method. Valid options are:</p> <ul><li> <p><code>:encoding</code> for changing the encoding</p> </li><li> <p><code>:indent_text</code> the indentation text, defaults to one space</p> </li><li> <p><code>:indent</code> the number of <code>:indent_text</code> to use, defaults to 2</p> </li><li> <p><code>:save_with</code> a combination of <a href="Node/SaveOptions.html">SaveOptions</a> constants.</p> </li></ul> <p>To save with UTF-8 indented twice:</p> <pre class="ruby"><span class="ruby-identifier">node</span>.<span class="ruby-identifier">write_to</span>(<span class="ruby-identifier">io</span>, :<span class="ruby-identifier">encoding</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;UTF-8&#39;</span>, :<span class="ruby-identifier">indent</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">2</span>) </pre> <p>To save indented with two dashes:</p> <pre class="ruby"><span class="ruby-identifier">node</span>.<span class="ruby-identifier">write_to</span>(<span class="ruby-identifier">io</span>, :<span class="ruby-identifier">indent_text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;-&#39;</span>, :<span class="ruby-identifier">indent</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">2</span>) </pre> <div class="method-source-code" id="write_to-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 751</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">write_to</span> <span class="ruby-identifier">io</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">options</span> <span class="ruby-identifier">options</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">:</span> {} <span class="ruby-identifier">encoding</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:encoding</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword">if</span> <span class="ruby-constant">Nokogiri</span>.<span class="ruby-identifier">jruby?</span> <span class="ruby-identifier">save_options</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_with</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">1</span>] <span class="ruby-identifier">indent_times</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:indent</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">save_options</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_with</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">SaveOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">FORMAT</span> <span class="ruby-identifier">indent_times</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:indent</span>] <span class="ruby-operator">||</span> <span class="ruby-value">2</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">indent_text</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:indent_text</span>] <span class="ruby-operator">||</span> <span class="ruby-string">&#39; &#39;</span> <span class="ruby-identifier">config</span> = <span class="ruby-constant">SaveOptions</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">save_options</span>.<span class="ruby-identifier">to_i</span>) <span class="ruby-keyword">yield</span> <span class="ruby-identifier">config</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span> <span class="ruby-identifier">native_write_to</span>(<span class="ruby-identifier">io</span>, <span class="ruby-identifier">encoding</span>, <span class="ruby-identifier">indent_text</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">indent_times</span>, <span class="ruby-identifier">config</span>.<span class="ruby-identifier">options</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-write_xhtml_to" class="method-detail "> <div class="method-heading"> <span class="method-name">write_xhtml_to</span><span class="method-args">(io, options = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Write <a href="Node.html">Node</a> as XHTML to <code>io</code> with <code>options</code></p> <p>See <a href="Node.html#method-i-write_to">#write_to</a> for a list of <code>options</code></p> <div class="method-source-code" id="write_xhtml_to-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 781</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">write_xhtml_to</span> <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span> = {} <span class="ruby-identifier">write_format_to</span> <span class="ruby-constant">SaveOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_XHTML</span>, <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-write_xml_to" class="method-detail "> <div class="method-heading"> <span class="method-name">write_xml_to</span><span class="method-args">(io, options = {})</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Write <a href="Node.html">Node</a> as <a href="../XML.html">XML</a> to <code>io</code> with <code>options</code></p> <pre class="ruby"><span class="ruby-identifier">doc</span>.<span class="ruby-identifier">write_xml_to</span> <span class="ruby-identifier">io</span>, :<span class="ruby-identifier">encoding</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&#39;UTF-8&#39;</span> </pre> <p>See <a href="Node.html#method-i-write_to">#write_to</a> for a list of options</p> <div class="method-source-code" id="write_xml_to-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 791</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">write_xml_to</span> <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span> = {} <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_with</span>] <span class="ruby-operator">||=</span> <span class="ruby-constant">SaveOptions</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_XML</span> <span class="ruby-identifier">write_to</span> <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-xml-3F" class="method-detail "> <div class="method-heading"> <span class="method-name">xml?</span><span class="method-args">()</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns true if this is an <a href="Document.html">XML::Document</a> node</p> <div class="method-source-code" id="xml-3F-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 528</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">xml?</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-constant">DOCUMENT_NODE</span> <span class="ruby-keyword">end</span></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-add_sibling" class="method-detail "> <div class="method-heading"> <span class="method-name">add_sibling</span><span class="method-args">(next_or_previous, node_or_tags)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="add_sibling-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 829</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">add_sibling</span> <span class="ruby-identifier">next_or_previous</span>, <span class="ruby-identifier">node_or_tags</span> <span class="ruby-identifier">impl</span> = (<span class="ruby-identifier">next_or_previous</span> <span class="ruby-operator">==</span> <span class="ruby-value">:next</span>) <span class="ruby-operator">?</span> <span class="ruby-value">:add_next_sibling_node</span> <span class="ruby-operator">:</span> <span class="ruby-value">:add_previous_sibling_node</span> <span class="ruby-identifier">iter</span> = (<span class="ruby-identifier">next_or_previous</span> <span class="ruby-operator">==</span> <span class="ruby-value">:next</span>) <span class="ruby-operator">?</span> <span class="ruby-value">:reverse_each</span> <span class="ruby-operator">:</span> <span class="ruby-value">:each</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-keyword">if</span> <span class="ruby-identifier">text?</span> <span class="ruby-identifier">pivot</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">Node</span>.<span class="ruby-identifier">new</span> <span class="ruby-string">&#39;dummy&#39;</span>, <span class="ruby-identifier">document</span> <span class="ruby-identifier">send</span> <span class="ruby-identifier">impl</span>, <span class="ruby-identifier">pivot</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">pivot</span> = <span class="ruby-keyword">self</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">node_or_tags</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">iter</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">n</span><span class="ruby-operator">|</span> <span class="ruby-identifier">pivot</span>.<span class="ruby-identifier">send</span> <span class="ruby-identifier">impl</span>, <span class="ruby-identifier">n</span> } <span class="ruby-identifier">pivot</span>.<span class="ruby-identifier">unlink</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">text?</span> <span class="ruby-keyword">else</span> <span class="ruby-identifier">send</span> <span class="ruby-identifier">impl</span>, <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span> <span class="ruby-identifier">node_or_tags</span> <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-compare" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> compare(other) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Compare this <a href="Node.html">Node</a> to <code>other</code> with respect to their <a href="Document.html">Document</a></p> <div class="method-source-code" id="compare-source"> <pre>static VALUE compare(VALUE self, VALUE _other) { xmlNodePtr node, other; Data_Get_Struct(self, xmlNode, node); Data_Get_Struct(_other, xmlNode, other); return INT2NUM((long)xmlXPathCmpNodes(other, node)); }</pre> </div> </div> </div> <div id="method-i-dump_html" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> dump_html </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Returns the <a href="Node.html">Node</a> as html.</p> <div class="method-source-code" id="dump_html-source"> <pre>static VALUE dump_html(VALUE self) { xmlBufferPtr buf ; xmlNodePtr node ; VALUE html; Data_Get_Struct(self, xmlNode, node); buf = xmlBufferCreate() ; htmlNodeDump(buf, node-&gt;doc, node); html = NOKOGIRI_STR_NEW2(buf-&gt;content); xmlBufferFree(buf); return html ; }</pre> </div> </div> </div> <div id="method-i-get" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> get(attribute) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Get the value for <code>attribute</code></p> <div class="method-source-code" id="get-source"> <pre>static VALUE get(VALUE self, VALUE rattribute) { xmlNodePtr node; xmlChar *value = 0; VALUE rvalue; xmlChar *colon; xmlChar *attribute, *attr_name, *prefix; xmlNsPtr ns; if (NIL_P(rattribute)) { return Qnil; } Data_Get_Struct(self, xmlNode, node); attribute = xmlCharStrdup(StringValueCStr(rattribute)); colon = (xmlChar *)(uintptr_t)xmlStrchr(attribute, (const xmlChar)&#39;:&#39;); if (colon) { /* split the attribute string into separate prefix and name by * null-terminating the prefix at the colon */ prefix = attribute; attr_name = colon + 1; (*colon) = 0; ns = xmlSearchNs(node-&gt;doc, node, prefix); if (ns) { value = xmlGetNsProp(node, attr_name, ns-&gt;href); } else { value = xmlGetProp(node, (xmlChar*)StringValueCStr(rattribute)); } } else { value = xmlGetNoNsProp(node, attribute); } xmlFree((void *)attribute); if (!value) { return Qnil; } rvalue = NOKOGIRI_STR_NEW2(value); xmlFree((void *)value); return rvalue ; }</pre> </div> </div> </div> <div id="method-i-in_context" class="method-detail "> <div class="method-heading"> <span class="method-name">in_context</span><span class="method-args">(p1, p2)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>TODO: DOCUMENT ME</p> <div class="method-source-code" id="in_context-source"> <pre>static VALUE in_context(VALUE self, VALUE _str, VALUE _options) { xmlNodePtr node, list = 0, tmp, child_iter, node_children, doc_children; xmlNodeSetPtr set; xmlParserErrors error; VALUE doc, err; int doc_is_empty; Data_Get_Struct(self, xmlNode, node); doc = DOC_RUBY_OBJECT(node-&gt;doc); err = rb_iv_get(doc, &quot;@errors&quot;); doc_is_empty = (node-&gt;doc-&gt;children == NULL) ? 1 : 0; node_children = node-&gt;children; doc_children = node-&gt;doc-&gt;children; xmlSetStructuredErrorFunc((void *)err, Nokogiri_error_array_pusher); /* Twiddle global variable because of a bug in libxml2. * http://git.gnome.org/browse/libxml2/commit/?id=e20fb5a72c83cbfc8e4a8aa3943c6be8febadab7 */ #ifndef HTML_PARSE_NOIMPLIED htmlHandleOmittedElem(0); #endif /* This function adds a fake node to the child of +node+. If the parser * does not exit cleanly with XML_ERR_OK, the list is freed. This can * leave the child pointers in a bad state if they were originally empty. * * http://git.gnome.org/browse/libxml2/tree/parser.c#n13177 * */ error = xmlParseInNodeContext(node, StringValuePtr(_str), (int)RSTRING_LEN(_str), (int)NUM2INT(_options), &amp;list); /* xmlParseInNodeContext should not mutate the original document or node, * so reassigning these pointers should be OK. The reason we&#39;re reassigning * is because if there were errors, it&#39;s possible for the child pointers * to be manipulated. */ if (error != XML_ERR_OK) { node-&gt;doc-&gt;children = doc_children; node-&gt;children = node_children; } /* make sure parent/child pointers are coherent so an unlink will work * properly (#331) */ child_iter = node-&gt;doc-&gt;children ; while (child_iter) { if (child_iter-&gt;parent != (xmlNodePtr)node-&gt;doc) { child_iter-&gt;parent = (xmlNodePtr)node-&gt;doc; } child_iter = child_iter-&gt;next; } #ifndef HTML_PARSE_NOIMPLIED htmlHandleOmittedElem(1); #endif xmlSetStructuredErrorFunc(NULL, NULL); /* Workaround for a libxml2 bug where a parsing error may leave a broken * node reference in node-&gt;doc-&gt;children. * This workaround is limited to when a parse error occurs, the document * went from having no children to having children, and the context node is * part of a document fragment. * https://bugzilla.gnome.org/show_bug.cgi?id=668155 */ if (error != XML_ERR_OK &amp;&amp; doc_is_empty &amp;&amp; node-&gt;doc-&gt;children != NULL) { child_iter = node; while (child_iter-&gt;parent) { child_iter = child_iter-&gt;parent; } if (child_iter-&gt;type == XML_DOCUMENT_FRAG_NODE) { node-&gt;doc-&gt;children = NULL; } } /* FIXME: This probably needs to handle more constants... */ switch (error) { case XML_ERR_INTERNAL_ERROR: case XML_ERR_NO_MEMORY: rb_raise(rb_eRuntimeError, &quot;error parsing fragment (%d)&quot;, error); break; default: break; } set = xmlXPathNodeSetCreate(NULL); while (list) { tmp = list-&gt;next; list-&gt;next = NULL; xmlXPathNodeSetAddUnique(set, list); nokogiri_root_node(list); list = tmp; } return Nokogiri_wrap_xml_node_set(set, doc); }</pre> </div> </div> </div> <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/node.rb, line 865</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">inspect_attributes</span> [<span class="ruby-value">:name</span>, <span class="ruby-value">:namespace</span>, <span class="ruby-value">:attribute_nodes</span>, <span class="ruby-value">:children</span>] <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-native_write_to" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> native_write_to(io, encoding, options) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Write this <a href="Node.html">Node</a> to <code>io</code> with <code>encoding</code> and <code>options</code></p> <div class="method-source-code" id="native_write_to-source"> <pre>static VALUE native_write_to( VALUE self, VALUE io, VALUE encoding, VALUE indent_string, VALUE options ) { xmlNodePtr node; const char * before_indent; xmlSaveCtxtPtr savectx; Data_Get_Struct(self, xmlNode, node); xmlIndentTreeOutput = 1; before_indent = xmlTreeIndentString; xmlTreeIndentString = StringValueCStr(indent_string); savectx = xmlSaveToIO( (xmlOutputWriteCallback)io_write_callback, (xmlOutputCloseCallback)io_close_callback, (void *)io, RTEST(encoding) ? StringValueCStr(encoding) : NULL, (int)NUM2INT(options) ); xmlSaveTree(savectx, node); xmlSaveClose(savectx); xmlTreeIndentString = before_indent; return io; }</pre> </div> </div> </div> <div id="method-i-process_xincludes" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> process_xincludes(options) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Loads and substitutes all xinclude elements below the node. The parser context will be initialized with <code>options</code>.</p> <div class="method-source-code" id="process_xincludes-source"> <pre>static VALUE process_xincludes(VALUE self, VALUE options) { int rcode ; xmlNodePtr node; VALUE error_list = rb_ary_new(); Data_Get_Struct(self, xmlNode, node); xmlSetStructuredErrorFunc((void *)error_list, Nokogiri_error_array_pusher); rcode = xmlXIncludeProcessTreeFlags(node, (int)NUM2INT(options)); xmlSetStructuredErrorFunc(NULL, NULL); if (rcode &lt; 0) { xmlErrorPtr error; error = xmlGetLastError(); if(error) { rb_exc_raise(Nokogiri_wrap_xml_syntax_error(error)); } else { rb_raise(rb_eRuntimeError, &quot;Could not perform xinclude substitution&quot;); } } return self; }</pre> </div> </div> </div> <div id="method-i-set" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> []=(property, value) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the <code>property</code> to <code>value</code></p> <div class="method-source-code" id="set-source"> <pre>static VALUE set(VALUE self, VALUE property, VALUE value) { xmlNodePtr node, cur; xmlAttrPtr prop; Data_Get_Struct(self, xmlNode, node); /* If a matching attribute node already exists, then xmlSetProp will destroy * the existing node&#39;s children. However, if Nokogiri has a node object * pointing to one of those children, we are left with a broken reference. * * We can avoid this by unlinking these nodes first. */ if (node-&gt;type != XML_ELEMENT_NODE) { return(Qnil); } prop = xmlHasProp(node, (xmlChar *)StringValueCStr(property)); if (prop &amp;&amp; prop-&gt;children) { for (cur = prop-&gt;children; cur; cur = cur-&gt;next) { if (cur-&gt;_private) { nokogiri_root_node(cur); xmlUnlinkNode(cur); } } } xmlSetProp(node, (xmlChar *)StringValueCStr(property), (xmlChar *)StringValueCStr(value)); return value; }</pre> </div> </div> </div> <div id="method-i-set_namespace" class="method-detail "> <div class="method-heading"> <span class="method-callseq"> set_namespace(namespace) </span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <p>Set the namespace to <code>namespace</code></p> <div class="method-source-code" id="set_namespace-source"> <pre>static VALUE set_namespace(VALUE self, VALUE namespace) { xmlNodePtr node; xmlNsPtr ns = NULL; Data_Get_Struct(self, xmlNode, node); if(!NIL_P(namespace)) { Data_Get_Struct(namespace, xmlNs, ns); } xmlSetNs(node, ns); return self; }</pre> </div> </div> </div> <div id="method-i-to_format" class="method-detail "> <div class="method-heading"> <span class="method-name">to_format</span><span class="method-args">(save_option, options)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="to_format-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 849</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_format</span> <span class="ruby-identifier">save_option</span>, <span class="ruby-identifier">options</span> <span class="ruby-comment"># FIXME: this is a hack around broken libxml versions</span> <span class="ruby-keyword">return</span> <span class="ruby-identifier">dump_html</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Nokogiri</span>.<span class="ruby-identifier">uses_libxml?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-node">%w[2 6]</span> <span class="ruby-operator">===</span> <span class="ruby-constant">LIBXML_VERSION</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;.&#39;</span>)[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_with</span>] = <span class="ruby-identifier">save_option</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_with</span>] <span class="ruby-identifier">serialize</span>(<span class="ruby-identifier">options</span>) <span class="ruby-keyword">end</span></pre> </div> </div> </div> <div id="method-i-write_format_to" class="method-detail "> <div class="method-heading"> <span class="method-name">write_format_to</span><span class="method-args">(save_option, io, options)</span> <span class="method-click-advice">click to toggle source</span> </div> <div class="method-description"> <div class="method-source-code" id="write_format_to-source"> <pre><span class="ruby-comment"># File lib/nokogiri/xml/node.rb, line 857</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier">write_format_to</span> <span class="ruby-identifier">save_option</span>, <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</span> <span class="ruby-comment"># FIXME: this is a hack around broken libxml versions</span> <span class="ruby-keyword">return</span> (<span class="ruby-identifier">io</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">dump_html</span>) <span class="ruby-keyword">if</span> <span class="ruby-constant">Nokogiri</span>.<span class="ruby-identifier">uses_libxml?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-node">%w[2 6]</span> <span class="ruby-operator">===</span> <span class="ruby-constant">LIBXML_VERSION</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;.&#39;</span>)[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-identifier">options</span>[<span class="ruby-value">:save_with</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">save_option</span> <span class="ruby-identifier">write_to</span> <span class="ruby-identifier">io</span>, <span class="ruby-identifier">options</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>