![]() |
Neuen Knoten einfügen
Hallo ich habe ein Problem mit dem Einfügen einese Knotens in ein bestehendes XML-Document. Ich habe folgenden Code geschrieben und benutzte Delphi 7:
Delphi-Quellcode:
Das Problem ist, ich bekomme keine Fehlermeldung beim ausführen. Aber in dem XML-Document wird kein Knoten eingefügt.
procedure TForm1.BSpeichernClick(Sender: TObject);
var NewScript: IXMLNode; ValueScript: IXMLNode; begin NewScript := XMLDocument1.DocumentElement.AddChild('Script'); //Erstellen der Attribute if CBDBTyp.ItemIndex = 0 then NewScript.Attributes['DB-Typ'] := 'SQL-Server' else NewScript.Attributes['DB-Type'] := 'Oracle'; NewScript.Attributes['Nummer'] := ENummer.Text; if CBAuthor.ItemIndex = 0 then NewScript.Attributes['Author'] := 'CD'; if CBAuthor.ItemIndex = 1 then NewScript.Attributes['Author'] := 'FV'; if CBAuthor.ItemIndex = 2 then NewScript.Attributes['Author'] := 'JSP'; //Erstellen der Elemente ValueScript := NewScript.AddChild('Beschreibung'); ValueScript.Text := MBeschreibung.Text; ValueScript := NewScript.AddChild('Befehl'); ValueScript.Text := MSQL.text; end; Hat vieleicht jemand eine Idee woran das liegen könnte? |
Re: Neuen Knoten einfügen
Ich kenne mich damit nicht so aber, aber muss man das XML-Dokument nicht auch speichern?
|
Re: Neuen Knoten einfügen
Du meinst, es wird erst in das Document geschrieben, wenn ich expliziert speichere. Das wäre möglich ich probiere es mal aus. Danke für den Tip.
|
Re: Neuen Knoten einfügen
Ich habe jetzt den Code wie folgt abgeändert.
Delphi-Quellcode:
Jetzt bekomme ich aber eine Fehlermeldung Exception der Klasse EDOMParserError. Ich gehe mal davon aus das die XML-Datei fehlerhaft ist, aber im Browser wird sie richtig dargestellt.
procedure TForm1.BSpeichernClick(Sender: TObject);
var NewScript: IXMLNode; ValueScript: IXMLNode; begin XMLDocument1.LoadFromFile(FileName); NewScript := XMLDocument1.DocumentElement.AddChild('Script'); //Erstellen der Attribute if CBDBTyp.ItemIndex = 0 then NewScript.Attributes['DB-Typ'] := 'SQL-Server' else NewScript.Attributes['DB-Type'] := 'Oracle'; NewScript.Attributes['Nummer'] := ENummer.Text; if CBAuthor.ItemIndex = 0 then NewScript.Attributes['Author'] := 'CD'; if CBAuthor.ItemIndex = 1 then NewScript.Attributes['Author'] := 'FV'; if CBAuthor.ItemIndex = 2 then NewScript.Attributes['Author'] := 'JSP'; //Erstellen der Elemente ValueScript := NewScript.AddChild('Beschreibung'); ValueScript.Text := MBeschreibung.Text; ValueScript := NewScript.AddChild('Befehl'); ValueScript.Text := MSQL.text; XMLDocument1.SaveToFile(FileName); end; |
Re: Neuen Knoten einfügen
Hallo der oben beschriebenen Code funktioniert. Ich hatte einen Zeichendreher in meinem FileName.
Machmal sind es einfach die Flüchtigkeitsfehler die einen aufhalten. In diesem Sinne... |
Re: Neuen Knoten einfügen
Schön, aber mach dir trotzdem mal Gedanken über diese Stelle:
Zitat:
|
Re: Neuen Knoten einfügen
Das war ja nur ein Prototype :-D ich habe jetzt anders gemacht.
Delphi-Quellcode:
case CBAuthor.ItemIndex of
0: NewScript.Attributes['Author'] := 'CD'; 1: NewScript.Attributes['Author'] := 'FV'; 2: NewScript.Attributes['Author'] := 'JSP'; end; |
Re: Neuen Knoten einfügen
Mit einem
Delphi-Quellcode:
ginge es in einer Zeile. ;) Aber was steht denn in dieser ComboBox (CBAuthor) drin? Kannst du das nicht direkt verwenden?
array[0..2]of string[?]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz