我将XML直接导出到文件,以避免渲染到查看所需的时间,并且它运行良好:
控制器:
def onixout
s = render_to_string(:template=>"isbns/onix.xml.builder")
send_data(s, :type=>"text/xml",:filename => "onix2.1.xml")
end
Builder文件很标准:
xml.instruct!(:xml, :version => "1.0", :encoding => "utf-8")
xml.declare! :DOCTYPE, :ONIXMessage, :SYSTEM, "http://www.editeur.org/onix/2.1/03/reference/onix-international.dtd"
xml.ONIXMessage do
xml.Header do
if Company.where(:client_id => current_user.client_id).first.nil?
else
xml.FromCompany Company.where(:client_id => current_user.client_id).first.sendername
end
end
Isbn.where(:client_id => current_user.client_id).search(params[:q]).result.all.each do |isbn|
xml.Product do
xml.NotificationType isbn.notificationtype unless isbn.notificationtype.blank?
isbn.productcodes.each do |productcode|
xml.ProductIdentifier do
#more
但是在结果文件中,我在开始时收到一个不需要的字符串(在这种情况下为e047d):
e047d
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE ONIXMessage SYSTEM "http://www.editeur.org/onix/2.1/03/reference/onix-international.dtd">
<ONIXMessage>
<Header>
#more
在文档末尾也有一个'0'。
知道它们是什么吗?而且,显然,如何摆脱?