Danke für den Kommentar himitsu - mit
XML haben hier scheinbar nicht wo viele was am Hut.
Im Forum sind viele Threads die ohne Lösung enden.
Also: der Grund für das (scheinbare) Nicht-Funktionieren war, daß ich in ListBox1 reingeschrieben habe,
mein Blick aber auf die dafür extra eingerichtete ListBox2 geheftet war.
Die
Exception kam beim zweiten Aufruf, denn am Ende des ersten Aufrufs steht: XMLDocument1.Free;
mit
Zitat:
muß ich immer die gleichen Prozeduren aufrufen um die Struktur zu erzeugen?
meinte ich was ich tun muß wenn ich die Datei nicht finde oder sie fehlerhaft ist.
Ich versuche das jetzt über den EDOMParseError zu erreichen, der angeblich
bei Active:=true erzeugt wird.
Delphi-Quellcode:
procedure TForm2.Button7Click(Sender: TObject);
var i:integer;
app:IXMLNode;
begin
try
XMLDocument1.LoadFromFile('d:\texst.xml');
XMLDocument1.Active := True;
except On E: EDOMParseError do
begin
XMLDocument1.Version := '1.0';
XMLDocument1.StandAlone := 'yes'; //hier kommt jetzt die Zugriffsverletzung:
XMLDocument1.Encoding := 'UTF-8';
XMLDocument1.Options := [doNodeAutoIndent];
XMLDocument1.AddChild('WRT');
XMLDocument1.SaveToFile('d:\Texst.xml');
end;
end;
//XMLDocument1.Active:=true;
ListBox2.Items.Clear;
ListBox2.Items.Add(XMLDocument1.DocumentElement.NodeName);
for i := 1 to 5 do
begin
app:=XMLDocument1.DocumentElement.ChildNodes['applicant_'+IntToStr(i)];
ListBox2.Items.Add(app.ChildNodes['family_name'].text);
end;
XMLDocument1.Active:=false;
end;
Wenn die Datei vorhanden ist (text.xml ist vorhanden, texst.xml nicht) listet er die Inhalte auf,
ist sie nicht vorhanden kommt folgende Zugriffsverletzung:
---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt test_xml.exe ist eine
Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 0049935B in Modul 'test_xml.exe'. Lesen von Adresse 00000000' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Ich wollte an der Stelle an der klar ist, daß etwas mit der Datei nicht stimmt, die Struktur neu erzeugen um sie dann weiter zu befüllen.
Deine Bemerkung über doNodeAutoCreate kann ich nicht nachvollziehen, warum sollte diese Option eine
Exception erzeugen?