Вам нужно разделить его на отдельные документы, но это легко сделать.
Ruby's String.split
метод делает это легко. Например, если переменная foo
содержит текст, то foo.split("<?xml version ... ?>\n")
вернет массив, который вы можете зациклить:
foo.split("<?xml version ... ?>\n")
[
[0] "",
[1] "<!DOCTYPE ... >\n...\n",
[2] "<!DOCTYPE ... >\n...\n",
[3] "<!DOCTYPE ... >\n..."
]
Разберите каждый из этих кусков, и вы уже в пути. Возможно, вам придется добавить оператор XML DECL, чтобы осчастливить Нокогири, но я думаю, что без него все будет хорошо.