Parsing a xml file means separating a data block into pieces by following an algorithms, so that we can be easily manipulate.
If there are a requirement in rails application to read XMl file from remote, we can use the Nokogiri to read file from remote site. In this blog we are created a rake task to read remote xml file from url "http://www.kongregate.com/games_for_your_site.xml".
Here we passed this url as a param to the open() method of XML() which fetched xml file from remote and we read all <game> nodes & its child nodes(like id, title, thumbnail, category, description,
instructions etc.) from file.
Example:
Path: my_app/lib/tasks/soap.rake
task :soap do
xml_file_data = Nokogiri::XML(open("http://www.kongregate.com/games_for_your_site.xml"))
xml_file_data.xpath("//game").each do |data|
%w[id title thumbnail category description instructions].each do |d|
#concat node name & its value
p "#{d}: #{data.at(d).text}"
# puts data.at(d)
# puts data.at(d).text
end
end
end
Run rake task by command:
rake soap
Output looks like:
"ID: 446"
"TITLE: Sprout"
"THUMBNAIL: https://cdn2.kongcdn.com/game_icons/0000/0637/customlogic.sprout_icon.jpg?i10c=img.resize(width:93)"
"CATEGORY: Adventure & RPG"
"DESCRIPTION: A storybook adventure staring a tiny seed pod. Journey from your tiny island home to the lush forests of your dreams; explore the hand-drawn landscape and meet some interesting friends along the way.\n"
"INSTRUCTIONS: "
"ID: 4041"
"TITLE: N3wton"
"THUMBNAIL: https://cdn3.kongcdn.com/game_icons/0000/7181/N3wton_120.jpg?i10c=img.resize(width:93)"
"CATEGORY: Puzzle"
"DESCRIPTION: Maneuver your character through 25 puzzle filled levels.\nUpdate: Hopefully I’ve fixed a few problems with people not getting their badges. Unfortunately this caused any of your saved games to disappear. Sorry!\nA hint for level 21: Read the clue carefully, and pay close attention to the words themselves. Eventually you’ll get it ;)\nIf you find you can’t save the game, check to see if you have cookies enabled. They need to be enabled in order to save the game.\n"
"INSTRUCTIONS: Use WASD or the Arrow keys to move your character, click to fire.\n"
0 Comment(s)