From: umitanuki Date: 2005-10-17T23:55:16+09:00 Subject: Re: Unit Testing with REXML questions Hi Jeff, and Peter, I also got "5" with this code: xml.elements['/a/d'].size And then I checked your code like: xml.elements('/a/d') , it failed with message " in 'elements': wrong number of arguments(1 for 0) (Argument Error) ". Is it the difference of REXML version?? My REXML is 3.1.2.1. Regards, umitanuki Jeff Wood wrote: > Peter, > > Actually... i don't understand why you got "5" when you did size... > that was one element. > > And yes, an element contains it's children ... but they aren't going > to be iterated over unless you did something like /a/d/* or something > like that. > > what do you get when you run > > count = 0 ; xml.elements( '/a/d' ).each { count += 1 ) ; puts count > > ... of course umitanuki's to_a should also simply return an array of 1 length. > > j. > > On 10/16/05, umitanuki wrote: > >>Hi Peter, >> >>What you want is to get the array of specific nodes, isn't it?? >>If it's true, see code below: >> >>xmltest.rb : >>require 'rexml/document' >> >>xmlin = <> >> one >> two >> >> three >> four >> >> >>EOD >> >>xml = REXML::Document.new(xmlin) >>puts xml.elements.to_a('/a/d') >> >>-- >>then, you can iterate with the nodes of 'd', including knowing >>the number of 'd' nodes with '.size' method, right?? >> >>Regards, >> >> >>umitanuki >> >> >>Peter Fitzgibbons wrote: >> >>>HI Jeff, >>> >>>xmltest.rb : >>>require 'rexml/document' >>> >>>xmlin = <>> >>> one >>> two >>> >>> three >>> four >>> >>> >>>EOD >>> >>>xml = REXML::Document.new(xmlin) >>>puts xml.elements['/a/d'].size >>>puts xml.elements['/a/d'] >>> >>> >>>output : >>>5 >>> >>> three >>> four >>> >>> >>>xml.elements['/a/d'] returns the entire xml tree under/including /a/d >>> >>>I want this to return 1 (the number of "d" elements in the list) >>> >>> >>> >> >> >> > > > -- > "http://ruby-lang.org -- do you ruby?" > > Jeff Wood > > >