AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML zum Verzweifeln

Ein Thema von MyRealName · begonnen am 6. Sep 2023 · letzter Beitrag vom 14. Okt 2023
Antwort Antwort
Stolle58

Registriert seit: 4. Aug 2023
Ort: Frankfurt
18 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: XML zum Verzweifeln

  Alt 6. Sep 2023, 12:46
Ich hab Delphi 10.4 Pro und habe ebenfalls diesen Wizard.
Nur ist er gegenüber früher, in der Kategorie Web und nicht in XML zu finden.
Reinhold
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
674 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: XML zum Verzweifeln

  Alt 6. Sep 2023, 13:20
Ich habe jetzt im Endeffekt eine lauffähige rekursive Funktion, die den Namen des Unterlementes an den Parent-Namen (mit Punkt getrennt) anhängt. Das ganze wird

Code:
procedure IterateNode(ARoot: IXMLNode; ACurrentNodeName: String = '');
var
  lChild: IXMLNode;
  lNodeName: String;
begin
  lNodeName := IfThen(ACurrentNodeName <> '', ACurrentNodeName + '.', '');

  lChild := ARoot.ChildNodes.First;
  while Assigned(lChild) do
  begin
    if Not lChild.IsTextElement then
    begin
      if lChild.ChildNodes.Count > 0 then
      begin
        if DoIterate(lChild.NodeName) then
        begin
          CodeSite.EnterMethod(lChild.NodeName);
          IterateNode(lChild, lNodeName + lChild.NodeName);
          CodeSite.ExitMethod(lChild.NodeName);
        end;
      end;
    end else begin
      CodeSite.Send(csmLevel1, lNodeName + lChild.NodeName, VarToStr(lChild.NodeValue));

    end;
    lChild := lChild.NextSibling;
  end;
end;
Im Codesite wird das dann als Baum ausgegeben, leere Elemente werden unterdrückt. Dazu gibt es noch einen Aufruf von DoIterate, der Falsxe zurückliefert, wenn etwas nicht durchgegangen werden soll (ich muss einige Sachen gesondert behandeln).

Jedenfalls ist es eine lauffähige Lösung, damit der Thread auch einen Abschluss hat
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: XML zum Verzweifeln

  Alt 6. Sep 2023, 13:44
https://www.embarcadero.com/docs/rad...ure-matrix.pdf
XML Bindings nur in Enterprise/Architect.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
678 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: XML zum Verzweifeln

  Alt 6. Sep 2023, 17:20
Da geht es um was anderes, Tools um XML in datasets zu bekommen und zu exportieren. Der von mir angesprochene Wizard ist definitiv in der Pro-Version dabei, seit vielen Versionen.
Peter Below
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: XML zum Verzweifeln

  Alt 7. Sep 2023, 06:52
Eine aufgepette Version des Databinding-Assistenten findet man auch hier:

https://github.com/MvRens/x2xmldatabinding

Diese unterstützt ein bisschen mehr als der Assistent in Delphi.
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
674 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: XML zum Verzweifeln

  Alt 11. Okt 2023, 13:28
Ich habe das XML Databinding gefunden, das Problem war im Endeffekt, dass man dazu ein offenes Projekt haben muss.
Nun hat mir der Wizard 3 Funktionen in den erstellten Sourcecode mit reingegeben :

function GetORDER(Doc: IXMLDocument): IXMLORDERType;
function LoadORDER(const FileName: string): IXMLORDERType;
function NewORDER: IXMLORDERType;

(ORDER ist wohl der 1. Knoten...)

Nun die Frage... Sollte ich das Daten ändern wollen und das ganze wieder als XML speichern wollen, gibt es da auch eine Möglichkeit oder muss ich alles selbst machen und durch-iterieren ?

Edit: Kann man vllt den Start-Knoten "einfach" der Rootnode eines TXMLDocument zuweisen und los geht's ?

Geändert von MyRealName (11. Okt 2023 um 15:18 Uhr)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: XML zum Verzweifeln

  Alt 11. Okt 2023, 18:03
var
LOrder: IXMLOrderType;

LOrder.OwnerDocument.XML.Text sollte Dir den kompletten Inhalt des Baums als String liefern und den kannst Du dann in eine Datei schreiben. Dabei bitte das korrekte Encoding (normalerweise UTF-8) beachten.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
674 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: XML zum Verzweifeln

  Alt 12. Okt 2023, 05:53
var
LOrder: IXMLOrderType;

LOrder.OwnerDocument.XML.Text sollte Dir den kompletten Inhalt des Baums als String liefern und den kannst Du dann in eine Datei schreiben. Dabei bitte das korrekte Encoding (normalerweise UTF-8) beachten.

Danke, das geht, nutze allerdings

LOrder.OwnerDocument.SaveToFile...
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:39 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