![]() |
Werte in einer XML datei überschreiben
Hallo
Ich bin Anfänger in Sachen Delphi programmierung deshalb hab ich so meine schwierigkeiten.. und zwar ich möchte mit nem Button Werte in einer xml-Datei überschreiben... Jedoch hab ich keinen Plan welche units bzw. wie ich das ganze überhaupst machen soll. also eine einfache schritt für schritt anweisung bzw. ein ganzer Programmcodeauszug würde mir helfen. Ich weiss nur das man mit XMLDocument1.LoadFromFile('d:\test.xml'); die Datei laden kann. Aber beim Compilieren meldet er mir ein Undeclared Identifier: XMLDocument1 Achja Erklärungskommentare würden mir die Verständlichkeit erleichtern Danke schon mal im Vorraus. |
AW: Werte in einer XML datei überschreiben
XMLDocument1 ist eine Variable und diese mußt du natürlich erstmal deklarieren.
Außerdem soll es bestimmt eine Instanz von ![]() ![]() |
AW: Werte in einer XML datei überschreiben
Danke für deinen Link habs probiert zum Verstehen jedoch ohn jeglichen Erfolg.
bitte um Beispiel. |
AW: Werte in einer XML datei überschreiben
Schau dir einfach mal im Forum die anderen Beispiele an (
![]() und binde vorher die Unit XMLDoc und eventuell noch die Units XMLDOM und XMLIntf ein. |
AW: Werte in einer XML datei überschreiben
Okay ich glaub ich habs.. so wie kann ich jetzt z.B.: einen eintrag in der xml datei überschreiben?
z.B.: Wenn in der xml datei <COMM>blabla</COMM> steht und ich statt blabla... Hello eintragen möchte? Okay --> app.ChildNodes['COMM'].text:='Hello |
AW: Werte in einer XML datei überschreiben
Hallo
Soweit so gut kann ich jetzt mit dem unteren programmcode eine xml-Datei lesen und sie dann als geänderte-Datei abspeichern, aber wie kann ich nun in der xml-datei einen wert ändern? z.B <family_name>Meyer</family_name> --> <family_name>Schiefer</family_name> 1) das müsste doch mit app.SetAttribute('family_name',' meintext'); aber es funktioniert nicht :(
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var lXML : iXMLDocument; app : IXMLNode; begin lXML := TXMLDocument.Create(nil); lxml.LoadFromFile('C:\Users\Tomi\Test1\test.xml'); //HIER GEHÖRT 1) ???? lxml.SaveToFile('C:\Users\Tomi\Test1\test_geändert.xml'); end; |
AW: Werte in einer XML datei überschreiben
|
AW: Werte in einer XML datei überschreiben
Danke für den Link aber der bringt mich nicht weiter, hab da aus einem anderen thread (
![]() Hab da jetzt 3 Befehle, aber bei allen drei bekomm ich einen Laufzeitfehler..
Delphi-Quellcode:
//app.ChildNodes['family_name'].text:='Schiefer';
//app.SetAttribute('family_name','Schiefer'); //app.ChildValues['family_name']:='Schiefer'; |
AW: Werte in einer XML datei überschreiben
Was für ein Fehler?
Zitat:
BTW: Verwende bitte Code-Tags (in deinem Fall den Delphi-Tag) |
AW: Werte in einer XML datei überschreiben
Man möge den Kommentar beachten.
Was mach ich falsch??
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var lXML : iXMLDocument; app : IXMLNode; begin lXML := TXMLDocument.Create(nil); lxml.LoadFromFile('C:\Users\Tomi\Test1\test.xml'); //lxml.Active := True; app.ChildNodes['family_name'].text:='Schiefer'; // Hier die Fehlermeldung bzw. die Zugriffsverletzung lxml.SaveToFile('C:\Users\Tomi\Test1\test_geändert.xml'); end; end. Hier die XML-Datei:
XML-Code:
Also warum app.ChildNodes könnte mir klar sein, weil ich nämlich nicht den ganzen XML-Code einlese aber warum funktioniert nicht app.ChildValues['family_name']:='Schiefer'; oder app.SetAttribute('family_name','Schiefer'); ??
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<test> <applicant_1> <family_name>Meyer</family_name> <given_name>Harald</given_name> <testdate>13.03.2009</testdate> <language>english</language> <WR_RW>229</WR_RW> </applicant_1> </test> |
AW: Werte in einer XML datei überschreiben
Wo hast du app einen Node aus der XML zugewiesen?
Bei dir ist app "leer" (bei Interfaces ist es glücklicher Weile mit nil initialisiert) und dadurch entsteht natürlich die Zugriffsverletzung. PS: sollte da nicht eigentlich Delphi irgendwas von "nicht initialisierter Variable" faseln? also in den Compilerwarnungen. PSS: Zugriffsverletzungen auf Adresse $000000xx sollte dich immer stuzig machen und du solltest dich da mal nach einem NIL (als Inhalt) umsehen. |
AW: Werte in einer XML datei überschreiben
Nein, also der Compiler meldet nichts
|
AW: Werte in einer XML datei überschreiben
Hallo t0mmy,
ist zwar nicht all zu elegant, aber das könnte dir weiter helfen:
Delphi-Quellcode:
Gruß, Chris
procedure TForm1.Button1Click(Sender: TObject);
var lXML : iXMLDocument; app : IXMLNode; begin lXML := TXMLDocument.Create(nil); lxml.LoadFromFile('C:\Users\Tomi\Test1\test.xml'); // als erstes den Knoten 'test' finden app := lxml.ChildNodes.FindNode('test'); // jetzt den knoten 'applicant_1' finden if app <> nil then begin app := app.ChildNodes.FindNode('applicant_1'); end; // jetzt den Knoten 'family_name' finden if app <> nil then begin app := app.ChildNodes.FindNode('family_name'); end; // prüfen, ob wir den Knoten gefunden haben -> wenn <> nil if app <> nil then begin app.text:='Schiefer'; // Hier die Fehlermeldung bzw. die Zugriffsverletzung lXML.SaveToFile('testXML.xml'); ShowMessage('OK'); end else begin ShowMessage('Node not found'); end; end; |
AW: Werte in einer XML datei überschreiben
Danke vielmals... :-D
Ich hab gedacht man muss nicht den knoten suchen sonder ein Befehl findet den Knoten von selber und ändert den Inhalt... Sehr gut Kommentiert :) |
AW: Werte in einer XML datei überschreiben
|
AW: Werte in einer XML datei überschreiben
Da hab ich noch ne kleine frage...
wie kann ich aber beim knote Order eine variable ändern also zum Beispiel hier: <Order No="2058003995" DispDate="22.07.2010" Basket="3995"> möchte ich No ändern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 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-2025 by Thomas Breitkreuz