Senior & Expert RoR Developers Discussion Forum by Nyros Technologies

HIRE Ruby on Rails Expert Developers Programmers Coders From India
Ruby on Rails PHP .Net Developers Community, Nyros Technologies, Kakinada
 
Log in  or IF not a member please REGISTER
Username:
Password:   


Keyword
Log in | Profile 

Generate XML file using Hpricot Gem

 
Post new topic   Reply to topic    Senior & Expert RoR Developers Discussion Forum by Nyros Technologies Index -> Plugins and Gems
View previous topic :: View next topic  
Author Message
satya



Joined: 08 May 2008
Posts: 78

PostPosted: Thu Feb 25, 2010 12:17 pm    Post subject: Generate XML file using Hpricot Gem Reply with quote

Here is the sample application for generating xml using Hpricot gem

:>gem install hpricot


Generate sample application (run the below command)

:> rails hpricot

After that generate a controller (run the below command)
:> ruby script/generate controller xml

Now Place the below code in controller

DETAILS = [
{ :id =>1, :name => "EMP1", :exp => "3", :platform => "ROR" },
{ :id =>2, :name => "EMP2", :exp => "2.5", :platform => "Dot Net" },
{ :id =>3, :name => "EMP3", :exp => "2", :platform => "PHP" },
{:id =>5, :name => "EMP4", :exp => "2", :platform => "Designer"}
]

def index

end

def generate_with_rexml
hijack_response( generate_rexml )
end

def upload
uploaded_file = params[:xml_file]
data = uploaded_file.read if uploaded_file.respond_to? :read
if request.post? and data
case params[:commit]
when "Parse with Hpricot" : parse_with_hpricot( data )
end
else
redirect_to :action => 'index'
end
end


private

def hijack_response( out_data )
send_data( out_data, :type => "text/xml", :filename => "sample.xml" )
end

def generate_rexml
doc = REXML::Document.new
root = doc.add_element( "Details" )
DETAILS.each{ |element_data|

employe_element = root.add_element( "Employe" )
employe_element.add_attribute( "id", element_data[:id] )

name_element = employe_element.add_element( "Name" )
name_element.add_text( element_data[:name] )

exp_element = employe_element.add_element( "Exp" )
exp_element.add_text( element_data[:exp] )

platform_element = employe_element.add_element( "Platform" )
platform_element.add_text( element_data[:platform] )

}
doc.write( out_string = "", 2 )
return out_string
end

def parse_with_hpricot( xml_data )
doc = Hpricot.XML( xml_data )

(doc/:Name).each{ |name_element|
if name_element.inner_html == "EMP4"
parent = name_element.parent
parent.attributes["id"] = "4"
end
}

(doc/:Exp).each{ |exp_element|
if exp_element.inner_html == "2"
exp_element.inner_html = "2.5"
end
}

hijack_response( doc.to_s )
end



---Remove the comment from environment.rb file for the below line(Because database in no need for this application that's way remove the comment)

config.frameworks -= [ :active_record, :active_resource, :action_mailer ]

Now create index.rhtml file and place it in views/xml folder
Place the below code in index.rhtml

<%=link_to "Generate Using XML", :action => "generate_with_rexml" %>
<br />

Note: From the above link you can generate sample xml file

Here you can upload the Sample XML document that we generated above and click on Hpricot button you can generate the xml file with Help of Hpricot Gem

<% form_tag( {:action => 'upload'}, {:multipart => true} ) do -%>

<p>
File: <%= file_field_tag "xml_file" %><br/>
<%= submit_tag "Parse with Hpricot " %>
</p>

<% end -%>

Small search functionality is implemented (Find the Name and replace the id as ‘4’ in place of previous id and replace the exp as ‘2.5’ in place of previous exp)

Now run the below command in your command prompt
-----: ruby script/server

Thanks
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Senior & Expert RoR Developers Discussion Forum by Nyros Technologies Index -> Plugins and Gems
Page 1 of 1

 latest topics 
 Topics   Replies   Author   Views   Last Post 
No new posts validates_multiparameter_assignments plugin usage:
0 vijayalakshmi 27 Wed Jul 28, 2010 4:24 am
vijayalakshmi View latest post
No new posts paperclip plugin usage in rails:
0 vijayalakshmi 23 Wed Jul 28, 2010 4:07 am
vijayalakshmi View latest post
No new posts Polymorphism
1 phani.galla 46 Tue Jul 27, 2010 3:27 pm
umamahesh_nyros View latest post
No new posts Deploying Ruby on Rails Application with Passenger
2 sivakrishna.m 630 Tue Jul 27, 2010 2:16 pm
criether View latest post
No new posts Steps to implement star-rating using acts_as_rateable plugin
0 vijayalakshmi 46 Mon Jul 26, 2010 5:47 am
vijayalakshmi View latest post
No new posts Twitter Retweet Integartion
0 Anu 41 Thu Jul 22, 2010 12:27 pm
Anu View latest post
No new posts Usage of build method in rails
0 ktulasi 30 Thu Jul 22, 2010 12:19 pm
ktulasi View latest post
No new posts Facebook Like Integration in Rails
0 Anu 53 Thu Jul 22, 2010 12:16 pm
Anu View latest post
No new posts Fshare in your Rails Application.
0 Anu 39 Thu Jul 22, 2010 12:10 pm
Anu View latest post
No new posts Installation of Postgresql in windows.
1 swaminadhan 198 Thu Jul 15, 2010 10:17 am
proximity3 View latest post




Hire an expert Ruby on Rails developer / coder / programmer or development team from India now!!

Other Forums : PHP   ::   .Net   |   Free unlimited HTML CSS templates download

Nyros Technologies   |   Kakinada City Portal   |   Developers Blog   |   About Ruby on Rails Experts   |   More