Я не совсем понимаю, как вы перебираете свою коллекцию. Я бы переписал это следующим образом:
collection.each do |coll_of_fields|
coll_of_fields.each do |field|
spliceElement(field, dd)
end
newrow = dd.chop() + "\n"
end
Теперь вы, похоже, предполагаете, что в каждом массиве будет как минимум столько же элементов, сколько в первом массиве. Почему бы не зациклить сначала все строки, а затем все элементы подряд?
Также return newrow
мне не совсем понятен? Вы останавливаетесь после первой итерации через внешний цикл?
А почему бы вам не использовать /html/body/h1/text()
в исходном массиве, в котором вы передаете параметр?
Тогда ваш spliceElement может просто работать со строкой напрямую. Или я что-то упустил?