Delphi-Quellcode:
procedure TMyList.LoadFromFile(AFile: string);
var
i : integer;
lxml : TXMLDocument;
cn : IXMLNode;
cnTemp : IXMLNode;
begin
if(not FileExists(AFile))then exit;
Self.Clear;
lxml := TXMLDocument.Create(Application);
with lxml do
try
Options:=Options + [doNodeAutoIndent];
LoadFromFile(AFile);
cn:=DocumentElement;
for i :=0 to Pred(cn.ChildNodes.Count)do
begin
if(cn.ChildNodes.Nodes[i].NodeName = 'MyItem')then
begin
with TMyItem.Create(self) do
begin
FUser:= cn.ChildNodes[i].ChildValues['User'];//Hier tritt der Fehler auf
.
.
Und so schreib ich:
Delphi-Quellcode:
procedure TMyList.SaveToFile(AFile: string);
var
i : integer;
w : IXMLNode;
begin
with TXMLDocument.Create(nil) do
try
Active:=True;
Options:=[doNodeAutoIndent];
ParseOptions:=[poPreserveWhiteSpace];
with AddChild('MyList') do
begin
for i :=0 to Pred(Self.Count)do
begin
with AddChild('MyItem') do
begin
AddChild('User').Text:=MyItems[i].FUser;
AddChild('Password').Text:=MyItems[i].FPassword;
.
.
Hui der rote Kasten geht mal
Zitat von
Deep-Sea:
Zitat von
Angel4585:
Wie mache ich jetzt, dass beim Speichern bei einem leeren String <User></User> anstatt <User /> eingetragen wird?
Am Rande:
<User></User> und
<User /> stellen genau das gleiche dar. <User /> ist nur eine kürzere Schreibweise für ein Leeres Element.
Und was wenn ein String einfach ' ' sein soll? Also ein Leerzeichen? Dann macht er auch dieses <User />
Edit: Gott hats das Zitat verhunzt