我需要连接到外部 XML 文件进行下载和处理 (300MB+)。 然后运行 XML 文档并将元素保存在数据库中。
我已经在使用 Saxerator 的生产服务器上执行此操作没问题温柔对待内存。它很好用。这是我现在的问题 --
我需要使用 open-uri(尽管可能有其他解决方案?)来抓取要解析的文件。这个问题是 open-uri 必须在任何内容开始解析之前加载整个文件,这违背了使用 SAX 解析器节省内存的全部目的……有什么解决方法吗?我可以只从外部 XML 文档中读取吗?我无法加载整个文件,否则它会使我的服务器崩溃,并且由于该文档每 30 分钟更新一次,我不能只在我的服务器上保存它的副本(尽管这是我目前正在做的以确保一切正常).
我正在做这个 Ruby,p.s.
最佳答案
您可能想尝试 Net::HTTP 的 streaming interface而不是开放 URI。这将为 Saxerator(通过底层的 Nokogiri::SAX::Parser)提供一个 IO 对象而不是整个文件。
关于ruby - 巨型 xml 文档的 open-uri 和 sax 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21634792/