Вот что я пытаюсь сделать. Мне нужно иметь один CSV с заголовками и несколько строк. Я перебираю заголовки и сохраняю, а затем связываю данные строки с заголовком. Мне нужно иметь возможность перебирать каждую из строк в CSV, чтобы использовать для построения данных XML. Созданный XML-файл затем выгружается в виде XML-файла, и программа запускается в следующей строке в CSV-файле. В каждой строке есть столбец, в котором указано имя файла XML.
Вот что у меня так далеко.
Считать данные из файла CSV. Соберите данные заголовка и строки.
def get_rows
raw_data = CSV.read('test.csv', {:skip_blanks => false, :headers => true})
data = []
raw_data.each { |row| data << row}
return build_header(data, raw_data)
end
возьмите данные заголовка и строки и объедините их.
def build_header(data, raw_data)
(0..(data.length - 1)).each do |ri|
h = {}
raw_data.headers.each_with_index do |v, i|
h[v] = data[ri].fields[i]
end
return build_ostruct(h)
end
end
возьмите хеш h и сделайте из него октрум.
def build_ostruct(h)
x = OpenStruct.new(h)
uniq = x.tc_name
y = uniq_name.to_s + ".xml"
#marshal dump for debugging
x.marshal_dump.each{ |k,v| puts "#{k} => #{v}" }
return xml_builder(x, y)
end
Ниже я беру новую ostruct "x" и вызываю заголовки столбцов из CSV для #population узлов XML
Например: x.column1, x.column2, x.column3
Теперь часть, за которую я зацикливаюсь, - это получение ostruct для получения новой строки данных за цикл итерации. Цель состоит в том, чтобы заполнить ostruct каждой строкой из CSV. В настоящее время хэш отображает правильный набор данных, и мой XML заполняется, как ожидалось, но только с первой строкой данных. Как мне сделать это, чтобы перебрать все строки и заполнить ostruct данными для каждой итерации, чтобы я мог создать большой набор XML?
Заранее спасибо за любую помощь!