self[index, name = nil] -> REXML::Element | nil
[permalink][rdoc]index が指し示している要素を返します。
index には整数もしくは文字列を指定できます。
index に整数を指定した場合は index 番目の子要素を返します。 index は 1-origin です。つまり最初の要素の index は 1 であり、 0 ではありません。 n 番目の要素の index は n であり、 n-1 ではありません。これは XPath の仕様に合わせています。
index に文字列を指定した場合はその文字列を XPath と見なし、それで指定された要素を返します。 XPath が複数の要素を指している場合は、そのうち一つを返します。 XPath の性質上、子要素でない要素を返す場合もあります。
name は index に整数を指定した場合にのみ意味があります。 name を指定した場合 name という名前を持つ子要素の中で index 番目のものを返します。この場合も index は 1-origin です。
整数で指定した場合でも、XPathで指定した場合でも、指定した要素が存在しない場合は nil を返します。
require 'rexml/document' doc = REXML::Document.new '<a><b/><c id="1"/><c id="2"/><d/></a>' doc.root.elements[1] # => <b/> doc.root.elements['c'] # => <c id='1'/> doc.root.elements[2,'c'] # => <c id='2'/> doc = REXML::Document.new '<a><b><c /><a id="1"/></b></a>' doc.root.elements["a"] # => nil doc.root.elements["b/a"] # => <a id='1'/> doc.root.elements["/a"] # => <a> ... </>