うりゃ

for i in 1..3
puts(xmldata.elements["/root"].elements[i,"elem"])
e = xmldata.elements["/root"].elements[i,"elem"]
puts e.parent.elements.index(e) #ここ注目
end

index_in_parentはNodeクラスで定義されているので、
index_in_parentがelementだけではなくTEXTノードも
含めた全ての子Nodeの中での位置を指し示すのは
当然の仕様なんですよ。

なのでelementの並びの中での位置を知りたければ
親elementのelements配列中でのindexを求めれば
良いわけで、上記の解。