Mhm also es geht mal wieder um das
Xml Tutorial. Hab es mal wieder ausgegraben, da es
nie geklappt hat und ich es nocheinmal probieren wollte.
Unzwar kommt beim starten der Exe immer die Fehlermeldung, dass das Maximum 0 überscheitet wird.
Dann wird folgende Zeile makiert:
subNode := kunden.item[i].selectSingleNode(names[j]);
Hier mal der gesamte Code.
Delphi-Quellcode:
procedure TMainFrm.FormCreate(Sender: TObject);
begin
fAppPath := ExtractFilePath(Application.Exename);
xmlDoc := CoDomDocument40.Create;
xmlDoc.setProperty('
NewParser', true);
if not fileexists(fAppPath + Database_FName)
then begin
xmlDoc.loadXML('
<?xml version="1.0"><kundendatenbank></kundendatenbank>');
end else begin
xmlDoc.load(fAppPath + Database_FName);
end;
if xmlDoc.parseError.errorCode <> 0
then begin
MessageDlg('
Die Xml Datei ist nicht korrekt!' + #13#10 +
'
Programm beendet sich selbstständig.', mtError, [mbOk], 0);
Application.Terminate;
end;
UpdateList;
end;
procedure TMainFrm.UpdateList;
const
AName:
Array[0..1]
of String =('
name', '
vorname');
var
kunden: IXmlDomNodeList;
subNode: IXmlDomNode;
i, j: integer;
begin
LView.Items.Clear;
LView.Items.BeginUpdate;
kunden := xmlDoc.documentElement.selectNodes('
kunde');
for i := 0
to kunden.length -1
do begin
subNode := kunden.item[i].selectSingleNode('
name');
LView.Items.Add;
LView.Items[i].Caption := subNode.text;
with LView.Items[0].SubItems
do begin
for j := 0
to length(AName) -1
do begin
subNode := kunden.item[i].selectSingleNode(names[j]);
if subNode <>
nil then
Add(subNode.Text)
else
Add('
');
end;
end;
end;
LView.Items.EndUpdate;
end;