def to_flat_xml(delimiter=nil)
lines = []
hash_result = delimiter ? self.to_hash(delimiter) : self.to_hash
merged_hash = hash_result.delete_at 0
hash_result.each do |hash|
merged_hash.keys.each do |key|
merged_hash[key] += "#{delimiter}#{hash[key]}"
end
end
if delimiter
result_sets = merged_hash.values.map!{|x| x.split(delimiter)}.transpose
final_result = []
result_sets.each do |rs|
temp_result = {}
merged_hash.keys.each do |k|
temp_result[k] = rs[merged_hash.keys.index(k)]
end
final_result << temp_result
end
hash_result = final_result
end
hash_result.each do |hash|
lines << "<item>"
hash.each do |key, value|
xml_tag = key.to_s
value = '' if value == '#empty#'
lines << " <#{xml_tag}>#{REXML::Text.normalize(value)}</#{xml_tag}>"
end
lines << "</item>"
end
return lines.join("\n")
end