我只是想知道如何分割Nokogiri的大型XML输出
例如,我用Nokogiri::XML
填充数据,现在我想将所有这些数据存储在单独的文件中,每个文件不超过10MB。
从评论中编辑:我们不想在标记的中间划分,我们想要在每个文件中复制xml标题,Nokogiri的方法中必定有一些东西。
答案 0 :(得分:1)
假设你有一些xml:
xml = '<foo><child num="1"/><child num="2"/><child num="3"/></foo>'
doc = Nokogiri::XML(xml)
并且您希望打破子节点的范围并单独保存它们而不会丢失层次结构。你可以这样做:
[0..0, 1..1, 2..2].each do |range|
c = doc.clone
(c.xpath('/foo/child') - c.xpath('/foo/child')[range]).remove #remove nodes not in range
File.open("#{range.first}.xml", 'w') {|f| f.write(c.to_s) }
end
答案 1 :(得分:0)
如何使用这个简单的片段:
def split_by_size(text, size = 10 * 1024 * 1024)
text.scan /.{1, #{size}}/
end
split_by_size("12345" * 2, 3) # => ["123", "451", "234", "5"]
您可以使用此数组块将它们保存到单独的文件中。