Robert Klemme wrote: > 2009/3/26 Arun Kumar <arunkumar / innovaturelabs.com>: >> Robert Klemme wrote: >>> Where is "xml in an array"? The variable "xml" references an Array >>> because you use String#scan (see above). You can simply iterate that >>> Array as any other Array, too. Where is the problem? >> >> The problem is that i need to parse the xml from the feeds url and the >> code for it is written in another class. So I need to pass the feed url >> ie.'xml'. Since it is written inside an iterator ie. in between each >> do|content|, i cannot pass it as a prameter to the other class since xml >> variable will not be accessible after the iterator ends. Please help me. > > I don't see how the fact that variable "xml" goes out of scope at some > point in time prevents using in a different class or method. You > simply have to pass it on at the time when it is _in_ scope. > > Frankly, I get the impression that you lack some basic understanding > of how Ruby works, especially what objects and variables are. I > suggest you work through some introductory material or search the > archives of this group - there have been numerous discussions about > call by reference etc. Hi, Thanks for the advice. As u mentioned i'm new to ruby and i have still to learn a lot. But the problem is that i have to prepare an assignment in ruby regarding html extraction and to parse xml feeds from the html content. First i have to read the url from a csv file, then i should read the html contents of the url and then parse the xml. It is a tidy job. I have completed a major part of it until i stuck into this part. For providing further information I'm including the code class hello def hi(contents) begin contents.each do |content| #scanning the content using regexp to fetch the url url = content.scan(/(http:\/\/.*|https:\/\/.*)/i) #getting the contents of the url using 'Net::HTTP.get' by communicating to the host server response = Net::HTTP.get_response(URI.parse("#{url}")) case response when Net::HTTPSuccess then response when Net::HTTPRedirection then response = Net::HTTP.get(URI.parse(response['location'])) else response.error! end end end class extract def parser(xmlData) #extracting the feeds url from 'data' using 'regexp' xmlData = response.scan(/<link rel="alternate".*?href="(.*?xml|.*?rdf)"/i) #rssData = data.scan(/<link rel="alternate" type="application\/rss\+xml".*?href="(.*?)"/i) #atomData = data.scan(/<link rel="alternate" type="application\/atom\+xml".*?href="(.*?)"/i) if xmlData xmlData.each do |xml| #getting the xml contents of the xml url using 'Net::HTTP.get' by communicating to the host server tags = Net::HTTP.get(URI.parse("#{xml}")) #getting the text in between the description tag values = tags.scan(/<description>(.*?)<\/description>/im) # storing the description in a hash details = Hash.new details = {"#{xml}"=>"#{values}"} end end end puts "Processing complete!" end end As u see the 'response' variable is the variable to be send as a parameter to the extract class. But it is inside an iterator(contents.each) I cannot pass the whole content to the next class. Can u please give me a suggestion for that Regards Arun Kumar -- Posted via http://www.ruby-forum.com/.