Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FDMemTable zu XML convertieren (https://www.delphipraxis.net/202059-fdmemtable-zu-xml-convertieren.html)

linxxruxx 24. Sep 2019 09:58

FDMemTable zu XML convertieren
 
Hallo,

ich habe eine FDMemTable mit vielen Einträgen.

Das Ziel wäre es, die Memtable zu durchlaufen und immer den aktuellen Eintrag, also die ausgewählte Zeile als XML zu speichern.

Delphi-Quellcode:
FDMemTable1.First;
   
while not FDMemTable1.Eof do
begin
  NewXML := FDMemTalbe1.XMLData;
  ShowMessage(NewXML);
  FDMemTalbe1.Next;
end;

Leider funktioniert das so nicht, da er mir dann immer alle Einträge der FDMemTable1 als XML speichert.
Hat jemand eine Idee, wie ich jeden Eintrag einzeln ins XML-Format bringen kann? Um es so dann an den Server zu senden?


Danke für die Hilfe

Schokohase 24. Sep 2019 10:11

AW: FDMemTable zu XML convertieren
 
XML ist eine Beschreibungssprache. Kann man sich also wie Deutsch oder Englisch vorstellen.

Du willst jetzt Daten als XML um diese an einen Server zu senden.

Würde übersetzt lauten: Du willst einen Antrag bei einer deutschen Behörde stellen.

Tja, dafür reicht aber die deutsche Sprache nicht, sondern du brauchst ein Formular bzw. du musst dich an weitere Formularien halten zusätzlich zu deutsch.

Und genauso ist das mit XML oder JSON und so einem Server. Ohne also genau zu kennen was der Server wirklich haben will (ja, ja, XML, das haben wir verstanden) wird das nix.

TigerLilly 24. Sep 2019 10:46

AW: FDMemTable zu XML convertieren
 
Ich kenne FDMemTable nicht so gut, aber wenn es unbedingt die Methode .XMLData sein muss, vielleicht hilft dir ein Filter, der nur den aktuellen Datensatz durchlässt? Die Schleife wird natürlich ein wenig komplizierter. Oder du baust eine zweite TFDMemTable mit identer Struktur und kopierst nur den aktuellen Datensatz dorthin.

Oder du erzeugst dein XML mit eigenen Mitteln.

UntoterGeist 26. Sep 2019 23:02

AW: FDMemTable zu XML convertieren
 
Du willst also, dass er die Einträge alle in eine Datei speichert, aber er speichert alles in einer neuen Datei? Das erschließt sich mir nicht so richtig. Ist NewXML eigentlich ein String? Weil dann kannst du alles in einen einzigen String packen und zum Schluss erst Abschicken Speichern oder sonst was. Auch: In deinem Beispiel gibst du es ja als Messagebox aus. Von daher weiß ich nicht was du da sendest.

linxxruxx 27. Sep 2019 06:34

AW: FDMemTable zu XML convertieren
 
Hallo,

ich konnte die Sache jetzt etwas anders lösen. Und zwar haben wir uns für Json entschieden.
Sende also einfach einen JsonString an den Server, anstatt mir ein komplettes XML in Delphi zu bauen :-)
Damit kann das Backend super arbeiten.

Hierfür habe ich zwei Tabellen meiner Aufträge.
Zum einen eine mit allen Aufträgen inkl. Änderungen und zum anderen eine Cache Tabelle, wo nur die Änderungen drin sind.
Diese Cache Tabelle lade ich mir in eine Memtable, speichere die Inhalte in ein JSON-Objekt und schicke sie an den Server.
Danach ändere ich den Status in der Cache Tabelle, indem ich "SentToServer" auf true setze.
Das ist später für mich ein Anhaltspunkt, um die bereits gesendeten Aufträge aus der Cache Tabelle zu löschen.

Danke für die Zeit und Mühe.

Schokohase 27. Sep 2019 06:46

AW: FDMemTable zu XML convertieren
 
Zitat:

Zitat von linxxruxx (Beitrag 1448113)
Sende also einfach einen JsonString an den Server, anstatt mir ein komplettes XML in Delphi zu bauen :-)
Damit kann das Backend super arbeiten.

Bei diesen Aussagen kann man nur verständnislos mit dem Kopf schütteln.

Statt einem kompletten XML baust du dir nun ein komplettes JSON.
Statt einfach ein XML zu senden sendest du nun einfach ein JSON.

Wo war da der Unterschied?

Die Backends, die ich so kenne (und auch baue) haben kein Problem mit JSON, XML und wenn man möchte YAML oder welch anderes strukturierte Format auch kommen mag. Es ist einfach nur ein Serializer/Deserializer der hinzugefügt wird und das war es.

Aber wenn es funktioniert ist es ja gut. Irgendwann fängt man auch an zu verstehen ...

linxxruxx 27. Sep 2019 06:56

AW: FDMemTable zu XML convertieren
 
ja du hast schon recht.
Aus ner Zeile einer Memtable ein JSON-Objekt zu erstellen empfand ich jetzt trotzdem als einfacher.
Das ging mit XML nicht so einfach bezüglich einer Zeile. Zumindest für mich.
Für dich oder andere ist das wsl. ein Zuckerschlecken aber dafür bin ich halt noch zu unwissend und unerfahren und stell mich vll nicht ganz so schlau an.

@Schokohase: bei dir hab ich nur das Gefühl, dass ich hier drin am besten Garnichts mehr posten darf, so wie du jedesmal reagiert hast.
Auch wenn ich mich nicht so profimäßig verständige, dachte ich wird trotzdem nett reagiert.
Bin ja auch super dankbar, für jede Antwort gewesen.

Schokohase 27. Sep 2019 07:18

AW: FDMemTable zu XML convertieren
 
Ok, ich werde mich in Zukunft aus deinen Themen heraushalten.

Daniel 27. Sep 2019 07:24

AW: FDMemTable zu XML convertieren
 
Du musst nur weniger schroff sein, ganz einfach.

TiGü 27. Sep 2019 09:18

AW: FDMemTable zu XML convertieren
 
@Schokohase: Das ist ja nun albern gleich hier und in der englischen DP das Handtuch zu werfen.
Ich habe deine Beiträge, trotz oder gerade wegen deiner direkten und schroffen Art, immer gerne gelesen und was gelernt.

Solltest du aber wegen mir unbekannter Vorgänge gegangen worden sein, dann ist das halt Hausrecht und okay.

UntoterGeist 28. Sep 2019 23:25

AW: FDMemTable zu XML convertieren
 
Ich versteh jetzt nicht, und ich hab auch nur begrenzt Erfahrung in Delphi, warum es so schwer sein soll, den String vollständig und korrekt zu addieren und dann abzuschicken?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz