Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Nokogiri XML解析偏移量/限制?_Ruby_Xml_Nokogiri - Fatal编程技术网

Ruby Nokogiri XML解析偏移量/限制?

Ruby Nokogiri XML解析偏移量/限制?,ruby,xml,nokogiri,Ruby,Xml,Nokogiri,我必须解析XML文件并从中导入数据,但该文件大约有1.6GB,大约3000万行XML,这代表了我的400000条记录 在我的生产服务器上,由于内存问题,脚本被终止。是否有一个选项来指定给定XPath应该打开多少个节点以及该节点的偏移量 我的示例代码: path = '/my/path' doc = Nokogiri::XML::parse(File.open(path)) doc.xpath('//tblPodmiotOsoba').each do |node| my_import_meth

我必须解析XML文件并从中导入数据,但该文件大约有1.6GB,大约3000万行XML,这代表了我的400000条记录

在我的生产服务器上,由于内存问题,脚本被终止。是否有一个选项来指定给定XPath应该打开多少个节点以及该节点的偏移量

我的示例代码:

path = '/my/path'
doc = Nokogiri::XML::parse(File.open(path))
doc.xpath('//tblPodmiotOsoba').each do |node|
  my_import_method
end
有没有这样的选择:

path = '/my/path'
doc = Nokogiri::XML::parse(File.open(path))
doc.xpath('//tblPodmiotOsoba', start:0 , end: 100).each do |node|
  my_import_method
end

还是别的什么?任何想法都是有用的。

不,您不能使用像
Nokogiri::XML.parse这样的DOM解析器来实现这一点。相反,您需要使用SAX解析器。首先将整个文件读入内存,然后解析它。相反,SAX逐行读取它,您的代码确定读取标记时要执行的操作。Nokogiri支持这一点,因此请仔细阅读其内容。