Class: Nokogiri::XML::EnumParse
- Inherits:
-
Object
- Object
- Nokogiri::XML::EnumParse
- Defined in:
- lib/nokogiri/enumparse.rb
Overview
Python の etree.iterparse と類似の機能を提供するクラス
Defined Under Namespace
Classes: SAXDoc
Instance Method Summary collapse
-
#enumerator ⇒ Enumerator
指定された tag の XMLエレメントを順次処理する Enumerator オブジェクトを返します.
-
#initialize(file_path, tag) ⇒ EnumParse
constructor
コンストラクタ.
Constructor Details
#initialize(file_path, tag) ⇒ EnumParse
コンストラクタ
53 54 55 56 57 58 59 60 61 |
# File 'lib/nokogiri/enumparse.rb', line 53 def initialize(file_path, tag) raise ArgumentError, 'file_path is not set.' unless file_path.is_a?(String) raise ArgumentError, 'tag is not set.' unless tag.is_a?(String) @fiber = Fiber.new do Nokogiri::XML::SAX::Parser.new(SAXDoc.new(tag)).parse(File.open(file_path)) {|ctx| ctx.recovery = true} Fiber.yield(nil) end end |
Instance Method Details
#enumerator ⇒ Enumerator
指定された tag の XMLエレメントを順次処理する Enumerator オブジェクトを返します
68 69 70 71 72 73 74 75 76 |
# File 'lib/nokogiri/enumparse.rb', line 68 def enumerator Enumerator.new do |y| loop do res = @fiber.resume break unless res y << res end end end |