AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Werte in einer XML datei überschreiben

Werte in einer XML datei überschreiben

Ein Thema von t0mmy · begonnen am 28. Jul 2010 · letzter Beitrag vom 29. Jul 2010
Antwort Antwort
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#1

AW: Werte in einer XML datei überschreiben

  Alt 29. Jul 2010, 10:57
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:
<?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>
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'); ??

Geändert von t0mmy (29. Jul 2010 um 11:21 Uhr) Grund: Delphi-Tag eingefügt; XML-Tag eingefügt; ChildNodes
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#2

AW: Werte in einer XML datei überschreiben

  Alt 29. Jul 2010, 11:39
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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Werte in einer XML datei überschreiben

  Alt 29. Jul 2010, 12:13
Nein, also der Compiler meldet nichts
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Werte in einer XML datei überschreiben

  Alt 29. Jul 2010, 13:03
Hallo t0mmy,

ist zwar nicht all zu elegant, aber das könnte dir weiter helfen:

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');
  // 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;
Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Werte in einer XML datei überschreiben

  Alt 29. Jul 2010, 14:03
Danke vielmals...
Ich hab gedacht man muss nicht den knoten suchen sonder ein Befehl findet den Knoten von selber und ändert den Inhalt...

Sehr gut Kommentiert
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#6

AW: Werte in einer XML datei überschreiben

  Alt 29. Jul 2010, 14:08
Soeinen Eierlegenwollmilschsaubefehl gibt es (also fast)

Diese Angelegenheut nennt sich XPath > Hier im Forum suchenXPath MSDN-Library durchsuchenXPath oder XPath
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#7

AW: Werte in einer XML datei überschreiben

  Alt 29. Jul 2010, 16:53
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.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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