意識の高いLISPマシン

藤原惟/すかいゆき(@sky_y)の技術用ブログ

[ruby][xml]REXMLのクラス

xml = REXML::Document.new(body) # bodyはプレーンのXML文書(String)
puts xml.class                          #=> REXML::Document
puts xml.root.class                     #=> REXML::Element
puts xml.elements.class                 #=> REXML::Elements
puts xml.root.elements['/a/b/c'].class  #=> REXML::Element

紛らわしい。


そして、each的なメソッドは以下のものが使える。(二つとも同じ意味)

xml.elements.each('/a/b/c'){|child| foo}
xml.root.each_element('/a/b/c'){|child| bar}

しかし、以下はなぜかブロック引数として改行とスペースだけの変なREXML::Textが交互に入る。(つまり使えない)

xml.elements['/a/b/c'].root.each_element{|child| baz} # ダメな例