ruby-on-rails – 如何使用Nokogiri编写一个巨大的XML文件?
我有一个Rails应用程序,它在报告功能中使用delayed_job来运行一些非常大的报告.其中一个生成了一个庞大的
XML文件,它可能需要几天时间才能编写代码.我认为,在互联网上看到令人印象深刻的基准测试后,Nokogiri可以为我们带来一些非常重要的性能提升.
但是,我能找到的唯一例子包括使用Nokogiri Builder创建一个xml对象,然后使用.to_xml来编写整个事物.但是我的邮政编码中没有足够的内存来处理这种大小的文件. 那么我可以使用Nokogiri将这些数据流式传输或写入文件吗? 解决方法
Nokogiri旨在构建内存,因为您构建了一个DOM并且它可以动态地将其转换为XML.它易于使用,但有一些权衡,在内存中进行操作就是其中之一.
您可能希望使用Erubis来生成XML.不是在处理之前收集所有数据并将逻辑保存在控制器中,就像我们使用Rails一样,为了节省内存,您可以将逻辑放在模板中并让它迭代数据,这应该有助于满足资源需求. 如果您需要文件中的XML,则可能需要使用重定向来执行此操作: erubis options templatefile.erb > xmlfile 这是一个非常简单的示例,但它表明您可以轻松定义模板以生成XML: <% asdf = (1..5).to_a %> <xml> <element> <% asdf.each do |i| %> <subelement><%= i %></subelement> <% end %> </element> </xml> 当我调用erubis test.erb输出时: <xml> <element> <subelement>1</subelement> <subelement>2</subelement> <subelement>3</subelement> <subelement>4</subelement> <subelement>5</subelement> </element> </xml> 编辑:
是的,它可以简单地因为垃圾收集.您没有显示有关如何构建字符串的任何代码示例,但是当您使用<<时,Ruby可以更好地工作.将一个字符串附加到另一个字符串而不是使用时. 最好不要尝试将所有内容保存在字符串中,而是将其立即写入磁盘,随后附加到打开的文件中. 再一次,没有代码示例,我在黑暗中拍摄你可能在做什么或为什么事情运行缓慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用JsonView来格式化json字符串
- sqlite “Error: near "sqlite3”: syntax error
- Postgresql 异步流复制 详解及配置切换
- cocos2d-x打包android apk文件
- ruby-on-rails – Rails缓存 – XML文件?
- ruby-on-rails – form_for with datetime_select
- 如何从AUR安装包还需要依赖AUR包的包
- 在Xcode 8中提供Thread Sanitizer和Address Sanitizer选项需
- JSON.stringify可以输出格式化的JSON字符串
- 在.NET中引发奇怪的异常