A
Alfred Pier
Hello guys ! I'm new in Ruby....Hope you can help because i'm trying a
lot and just can't see where is the problem..
I have this xml, and not only this, i want just for any xml file that i
might put :
<?xml version="1.0"?>
<records>
<company>
<id>p1</id>
<name>Skoda</name>
<price>10000</price>
<stock>4</stock>
<country>Czech Republic</country>
</company>
<company>
<id>p2</id>
<name>Mercedes</name>
<price>50000</price>
<stock>5</stock>
<country>Germany</country>
</company>
<company>
<id>p3</id>
<name>Alfa Romeo</name>
<price>18000</price>
<stock>19</stock>
<country>Italy</country>
</company>
<company>
<id>p4</id>
<name>Fiat</name>
<price>1500</price>
<stock>15000</stock>
<country>Italy</country>
</company>
</records>
AND USING THE CODE BELOW:
require 'nokogiri'
require 'pp'
xmldoc = Nokogiri::XML(IO.read("xmlinputfile.xml"))
columns = xmldoc.xpath('/*/*[position()=1]/*').map(&:name)
print "give csv output file\n"
csvoutputfile = gets.chomp
File.open(csvoutputfile, 'w') do |f|
rows =[]
xmldoc.xpath('/*/*').each do |row_xml|
row_values = []
f.puts " #{rows << row_values}"
row_xml.xpath('./*').each do |field|
f.puts "#{row_values << field.text}"
end
end
pp rows
end
I WANT TO CONVERT IT TO CSV FORMAT LIKE THIS:
id,name,price,stock,country
p1,Skoda,10000,4,Czech Republic,
p2,Mercedes,50000,5,Germany,
lot and just can't see where is the problem..
I have this xml, and not only this, i want just for any xml file that i
might put :
<?xml version="1.0"?>
<records>
<company>
<id>p1</id>
<name>Skoda</name>
<price>10000</price>
<stock>4</stock>
<country>Czech Republic</country>
</company>
<company>
<id>p2</id>
<name>Mercedes</name>
<price>50000</price>
<stock>5</stock>
<country>Germany</country>
</company>
<company>
<id>p3</id>
<name>Alfa Romeo</name>
<price>18000</price>
<stock>19</stock>
<country>Italy</country>
</company>
<company>
<id>p4</id>
<name>Fiat</name>
<price>1500</price>
<stock>15000</stock>
<country>Italy</country>
</company>
</records>
AND USING THE CODE BELOW:
require 'nokogiri'
require 'pp'
xmldoc = Nokogiri::XML(IO.read("xmlinputfile.xml"))
columns = xmldoc.xpath('/*/*[position()=1]/*').map(&:name)
print "give csv output file\n"
csvoutputfile = gets.chomp
File.open(csvoutputfile, 'w') do |f|
rows =[]
xmldoc.xpath('/*/*').each do |row_xml|
row_values = []
f.puts " #{rows << row_values}"
row_xml.xpath('./*').each do |field|
f.puts "#{row_values << field.text}"
end
end
pp rows
end
I WANT TO CONVERT IT TO CSV FORMAT LIKE THIS:
id,name,price,stock,country
p1,Skoda,10000,4,Czech Republic,
p2,Mercedes,50000,5,Germany,