Hallo,
der Zugriff auf alle run-Elemente erfolgt über
doc.DocumentElement.SelectNodes('*') - auf diese Weise musst du nicht nach iregendwelchen Startnummern suchen, die garnicht vorhanden sind. Am elegantesten erscheint mir tatsächlich ein indexsequentieller Zugriff auf die Elemente. Zwischenspeichern musst du dann eigentlich nur die Zeiger auf die einzelnen Elemente in der benötigten Reihenfolge.
Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
doc: IXMLDocument;
i: Integer;
list: TList;
begin
doc := CreateXmlDoc;
if doc.LoadXML(Memo.Text) then
begin
list := CreateIndex(doc.DocumentElement.SelectNodes('*'));
ListBox.Clear;
for i := 0 to Pred(list.Count) do
with IUnknown(list.Items[i]) as IXMLElement do
ListBox.Items.Add(GetAttribute('startnr'));
list.Free;
end;
end;
Grüße vom marabu