instance method REXML::Elements#[]

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 を返します。

[PARAM] index:
取り出したい要素の index (整数)もしくは xpath (文字列)
[PARAM] name:
子要素の名前(文字列)

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> ... </>