Please download latest beta version 2.8 where I have added PosEx function.
Also I made an example for you:
procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
sl: TStringList;
s, sRow, sDuration, sDistance: string;
iPos1, iPos2, iOffset: integer;
begin
sl := TStringList.Create;
sl.LoadFromFile('file.xml');
iOffset := 1;
iPos1 := 1;
while true do
begin
iPos1 := PosEx('<row>', sl.Text, iOffset);
if iPos1=0 then break;
iPos2 := PosEx('</row>', sl.Text, iOffset);
iOffset := iPos2+1;
sRow := Copy(sl.Text, iPos1, iPos2-iPos1);
sDuration := Copy(sRow, Pos('<duration>', sRow), Pos('</duration>', sRow)-Pos('<duration>', sRow) );
sDistance := Copy(sRow, Pos('<distance>', sRow), Pos('</distance>', sRow)-Pos('<distance>', sRow) );
s := Copy(sDuration, Pos('<text>', sDuration)+Length('<text>') , Pos('</text>', sDuration)-Pos('<text>', sDuration)-Length('<text>'));
Form1.Memo1.Lines.Add(s);
s := Copy(sDistance, Pos('<text>', sDistance)+Length('<text>') , Pos('</text>', sDistance)-Pos('<text>', sDistance)-Length('<text>'));
Form1.Memo1.Lines.Add(s);
end;
sl.Free;
end;
Project with the example: