gpt4 book ai didi

ruby - 如何使用 nokogiri gem 从 FTP 远程解析 XML 文件,无需下载

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:36 29 4
gpt4 key购买 nike

require 'net/ftp'
require 'nokogiri'

server = "xxxxxx"
user = "xxxxx"
password = "xxxxx"

ftp = Net::FTP.new(server, user, password)

files = ftp.nlst('File*.xml')

files.each do |file|
ftp.getbinaryfile(file)
doc = Nokogiri::XML(open(file))
# some operations with doc
end

使用上面的代码我能够解析/读取 XML 文件,因为它首先下载一个文件。

但是如何在不下载远程 XML 文件的情况下解析它呢?

上面的代码是 rake 任务的一部分,在运行时加载 rails 环境。


更新:

我不会创建任何文件。我将使用 mongoid 将信息导入 mongodb。

最佳答案

如果您只是想避免使用临时本地文件,可以通过提供 nil 作为本地文件名来直接获取文件内容作为字符串,并在内存中处理:

files.each do |file|
xml_string = ftp.getbinaryfile( file, nil )
doc = Nokogiri::XML( xml_string )
# some operations with doc
end

这仍然对内容进行 FTP 提取,并且在客户端进行 XML 解析。

确实不可能避免以某种形式获取数据,如果 FTP 是您唯一可用的协议(protocol),那么这意味着使用 FTP get 通过网络复制数据。然而,向您的 FTP(或其他基于网络的)服务器添加功能并以某种其他形式返回数据是可能的,但要复杂得多。这可能包括在服务器上远程完成的 Nokogiri 解析,但您仍然需要序列化最终结果,获取它并反序列化它。

关于ruby - 如何使用 nokogiri gem 从 FTP 远程解析 XML 文件,无需下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17441945/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com