![]() |
Vom IXmlNode zum IXmlDocument
Liebes Forum,
ich muss pro Datensatz aus einer csv-Quelle eine xml-Datei erstellen und gegen ein xsd-Schema validieren. Dazu hab ich erstmal mit dem xml-Datenbindung-Wizard aus der xsd-Datei die entsprechenden Interfaces und Klassen erzeugen lassen. Die eigentliche Datenbefüllung sollte damit kein Problem mehr sein, aber was ist der sauberste / schönste / best practice Weg diesen befüllten Nachfahren des IXmlNodes per IXmlDocument in eine xml-Datei zu schreiben? Oder ist diese Grundidee schon falsch? Was ich bisher habe (weitere Fragen im Code):
Delphi-Quellcode:
procedure TForm1.btnParseClick(Sender: TObject);
var lMyDaten: IXmlMyDaten; // Vom Wizard erstellter Root Node lXmlDoc: IXMLDocument; begin lMyDaten := NewMyDaten; // Vom Wizard erstellte Funktion lMyDaten.NName := 'Mustermann'; //Beispiel Daten lMyDaten.VName := 'Max'; lXmlDoc := NewXMLDocument('1.0'); // neues xml-Dokument initialisieren lXmlDoc.StandAlone := 'yes'; lXmlDoc.Encoding := 'UTF-8'; // dies hier ist denke ich nicht im Sinne des Erfinders // es kommt kein "gültiger" xml header raus // wie ist ein Übertragen möglich ohne per Schleife alle Childs zu durchlaufen? lXmlDoc.XML.Text := FormatXMLData(lMyDaten.XML); // was muss ich der xml-Datei mitteilen, dass hier die Validierung ausgelöst wird? lXmlDoc.Active := True; lXmlDoc.SaveToFile('MyDatenMuster.xml'); lXmlDoc := nil; lMyDaten := nil; end; |
AW: Vom IXmlNode zum IXmlDocument
Ok, ich denke ich bin ein Schritt weiter:
Delphi-Quellcode:
procedure TForm1.btnParseClick(Sender: TObject);
var lMyDaten: IXmlMyDaten; // Vom Wizard erstellter Root Node lXmlDoc: IXMLDocument; begin lXmlDoc := NewXMLDocument('1.0'); // neues xml-Dokument initialisieren lXmlDoc.StandAlone := 'yes'; lXmlDoc.Encoding := 'UTF-8'; // einkommentiert wird kein Node NName gefunden. Find ich merkwürdig. // lXmlDoc.Options := [doNodeAutoIndent]; // das sieht schon deutlich mehr danach aus, als ob es so gedacht ist lMyDaten:= GetMyDaten(lXmlDoc); // Vom Wizard erstellte Funktion lMyDaten.NName := 'Mustermann'; //Beispiel Daten lMyDaten.VName := 'Max'; // was muss ich der xml-Datei mitteilen, dass hier die Validierung ausgelöst wird? lXmlDoc.Active := True; lXmlDoc.SaveToFile('MyDatenMuster.xml'); lXmlDoc := nil; lMyDaten := nil; end; |
AW: Vom IXmlNode zum IXmlDocument
Denke noch besser:
Delphi-Quellcode:
procedure TForm1.btnParseClick(Sender: TObject);
var lMyDaten: IXmlMyDaten; // Vom Wizard erstellter Root Node lXmlDoc: IXMLDocument; begin lMyDaten:= NewMyDaten; // Vom Wizard erstellte Funktion lXmlDoc := lMyDaten.OwnerDocument; lXmlDoc.Version := '1.0'; lXmlDoc.StandAlone := 'yes'; lXmlDoc.Encoding := 'UTF-8'; // einkommentiert wird kein Node NName gefunden. Find ich merkwürdig. // lXmlDoc.Options := [doNodeAutoIndent]; lMyDaten.NName := 'Mustermann'; //Beispiel Daten lMyDaten.VName := 'Max'; // was muss ich der xml-Datei mitteilen, dass hier die Validierung ausgelöst wird? lXmlDoc.Active := True; lXmlDoc.SaveToFile('MyDatenMuster.xml'); lXmlDoc := nil; lMyDaten := nil; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 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