私は ::Builder::XmlMarkup を次のように使用しています:
# This is a class method in /lib, run ascynchronously using delayed_job.
# Bunch of file io / header stuff, then...
books.each do |book|
xml.Product do
xml.RecordReference "com.domain-#{book.id}"
xml.NotificationType book.notification unless book.notification.blank?
xml.ProductIdentifier do
xml.ProductIDType "15"
xml.IDValue book.isbn unless book.isbn.blank?
end
book.productcodes.each do |productcode|
unless productcode.idtype == "15"
xml.ProductIdentifier do
xml.ProductIDType productcode.idtype unless productcode.idtype.blank?
xml.IDValue productcode.idvalue unless productcode.idvalue.blank?
end
end
end
xml.ProductForm book.format unless book.format.blank?
xml.ProductFormDetail book.format_detail unless book.format_detail.blank?
xml.ProductFormDescription book.format_description unless book.format_description.blank?
など 問題は、それがさらに 250 行続くことです。これは、ちょっとした要素でいっぱいの XML ファイルを作成する方法ですか? それはあまりRubyishではないようです。