instance method REXML::Element#each_element_with_text

each_element_with_text(text = nil, max = 0, name = nil) {|element| ... } -> ()[permalink][rdoc]

テキストを子ノードとして持つすべての子要素を引数としてブロックを呼び出します。

text を指定すると、テキストの内容が text であるもののみを対象とします。 maxを指定すると、対象となる子要素の先頭 max 個のみが対象となります。 name を指定すると、それは xpath 文字列と見なされ、それにマッチするもののみが対象となります。

max に 0 を指定すると、max の指定は無視されます(0個ではありません)。

[PARAM] text:
テキストの中身(文字列)
[PARAM] max:
ブロック呼出の対象とする子要素の最大個数
[PARAM] name:
xpath文字列

require 'rexml/document'
doc = REXML::Document.new '<a><b>b</b><c>b</c><d>d</d><e/></a>'
doc.root.each_element_with_text {|e|p e}
# >> <b> ... </>
# >> <c> ... </>
# >> <d> ... </>
doc.root.each_element_with_text('b'){|e|p e}
# >> <b> ... </>
# >> <c> ... </>
doc.root.each_element_with_text('b', 1){|e|p e}
# >> <b> ... </>
doc.root.each_element_with_text(nil, 0, 'd'){|e|p e}
# >> <d> ... </>