JSON VS XML (RUBY)
JSON stands for JavaScript Object Notation. XML stands for EXtensible Markup Language. Both Json and Xml are used for exchanging data.
JSON is a light-weight text-based open standard design for human-readable data. It is mostly used format for exchanging data between cross platform languages. It originate from the JavaScript language.
JSON is easy and simple for machines to generate or parse. That makes it ideal to interchange format.
XML tags identify the data and are used to store and organize the data. The XML specifications do not match the data model for most programming languages. It is slower compared to JSON also its tedious for programmers to parse.
A employees record in json can be defined as :
{"employees":[
{"firstName":"Johnny", "lastName":"Dork"},
{"firstName":"Anne", "lastName":"Swan"},
{"firstName":"Peterson", "lastName":"Jacob"}
]}
The same records can be defined in XML as below:
<employees>
<employee>
<firstName>Johnny</firstName> <lastName>Dork</lastName>
</employee>
<employee>
<firstName>Anne</firstName> <lastName>Swan</lastName>
</employee>
<employee>
<firstName>Peterson</firstName> <lastName>Jacob</lastName>
</employee>
</employees>
How to parse json:
To parse a JSON string received by another application or generated within your existing application:
require 'json'
my_hash = JSON.parse('{"hello": "programmer"}')
puts my_hash["hello"] => "programmer"
Notice the extra quotes '' around the hash notation. Ruby expects the argument to be a string and cant convert objects like a hash or array.
Ruby converts string into a hash
How to create json:
Creating a JSON string for communication or serialization is just as simple.
require 'json'
my_hash = {:hello => "goodbye"}
puts JSON.generate(my_hash) => "{\"hello\":\"goodbye\"}"
Or an alternative way:
require 'json'
puts {:hello => "goodbye"}.to_json => "{\"hello\":\"goodbye\"}"
Parsing XML with nokogiri:
Nokogiri is used to get data from web or file and can parse xml & html.
With nokogiri you can parse strings and can fetch nodes. With Nokogiri you can edit documents, which means you can add or delete nodes.
require 'nokogiri'
xml_string = << eos
<employees>
<employee>
<firstName>Johnny</firstName> <lastName>Dork</lastName>
</employee>
<employee>
<firstName>Anne</firstName> <lastName>Swan</lastName>
</employee>
<employee>
<firstName>Peterson</firstName> <lastName>Jacob</lastName>
</employee>
</employees>
eos
parsed_xml = Nokogiri::XML xml_string
fetching data from parsed xml
fetch first employee node
parsed_xml.at_xpath("//employee")
fetch first employee name
parsed_xml.at_xpath("//employee/firstName").content OR parsed_xml.at_xpath("//employee/firstName").text OR parsed_xml.at_xpath("//employee").at_xpath('//firstName').content
How to get all employee nodes:
parsed_xml.xpath("//employee")
=> #returning an array of Keyword elements across the entire document, including at the root, and item levels.
For more details please visit the url "http://www.nokogiri.org/tutorials/parsing_an_html_xml_document.html"
0 Comment(s)