XML Namespace in Databinding Wizard
Hallo liebe Delphianer,
uns beschäftigt schon längere Zeit das Thema Namespaces in XML. Um den neuen Anforderungen gerecht zu werden, und um uns (hoffentlich) viel Programmieraufwand zu sparen, wollen wir zukünftig die für uns bereit gestellten XML-Schemata in Delphi einlesen und auf Basis deren unsere XML-Dateien erstellen. Derzeit erstellen wir alle XML-Dateien "von Hand" anstatt den Databinding-Wizard aus Delphi zu nutzen. Für "simple" XML-Dateien scheint das auch eine gangbare Lösung zu sein, jedoch versagt der ganze Assistent, wenn es um XML-Dateien mit Namespaces geht. Konkrekt kann eine Datei wie folgt aussehen:
Code:
Von der Struktur her scheint das auch alles zu klappen, nur fehlen eben die Deklarationen der etwaigen Namespaces.
<?xml version="1.0" encoding="ISO-8859-1"?>
<SampleRootTag xmlns="http://www.xyz.de/XMLSchema/Header/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xyz.de/XMLSchema/Header/1.0 Header.xsd" xmlns:aa="http://www.xyz.de/XMLSchema/AA_SampleNamespace" xmlns:bb="http://www.xyz.de/XMLSchema/BB_SampleNamespace" xmlns:cc="http://www.xyz.de/XMLSchema/CC_SampleNamespace/1.1" Versionsnummer="1.0.0"> <Header Versionsnummer="1.0.0"> <XMLTag> ... ... ... </XMLTag> </Header> <Body> <aa:Aufzaehlung> <cc:Element Versionsnummer="1.1.0"> <cc:Steuerung> <bb:Absender>123456789</bb:Absender> <bb:Empfaenger>987654321</bb:Empfaenger> <bb:Datum>2020-04-24T11:00:15</bb:Datum> </cc:Steuerung> </cc:Element> </aa:Aufzaehlung> </Body> </SampleRootTag> Nach etwas Googleei fande ich folgende Lösungen: https://github.com/miszellek/XMLDocHelper und https://www.tfzx.net/en/article/4885384.html Generell bin ich aber der Meinung, dass der Wizard das aber leisten sollte und würde nur ungern auf solche "Basteleien" setzen :roll:. Nun haben wir derzeit eine Delphi 10.2 Pro im Einsatz und fragen uns, ob es mit einer neueren Version und ggf. einer Enterprise Version funktionieren könnte. Mit der Trial-Version der aktuellen Version und dem XML-Assistenten kamen wir allerdings leider wieder nicht besonders weit und bekamen genau das gleiche Ergebnis wie auch schon zuvor. Aber vielleicht gibt es ja mittlerweile solch eine Option die wir noch nicht gefunden haben? Über Ratschläge und Lösungsansätze würde ich mich sehr freuen! |
AW: XML Namespace in Databinding Wizard
Vieleleicht ist auch hier dieser Thread
https://www.delphipraxis.net/206990-...-gefunden.html interessant. Wie dort beschrieben habe ich nach der Verwendung des Wizard bei "entsprechenden" XML-Knoten (hier musst jeder leider selbst nachdenken welche Knoten das betrifft) aus:
Delphi-Quellcode:
das hier gemacht:
function TXMLIrgendwas.Get_Tolledaten: IXMLTolleDaten;
begin Result := ChildNodes['Tolledaten'] as IXMLTolleDaten; end;
Delphi-Quellcode:
Ich hoffe das hilft anderen, falls die mal auf ein vergleichbares Problem stoßen.
function TXMLIrgendwas.Get_Tolledaten: IXMLTolleDaten;
var node : IXmlNode; const sCurrNodeName = 'Tolledaten'; sNamespaceURI = 'http://www.wichtigeseite.de/blabla/v1.1'; begin node := ChildNodes.FindNode(sCurrNodeName, sNamespaceURI); if (node = nil) then begin node := AddChild(sCurrNodeName, sNamespaceURI); end; Result := TXMLTolleDaten.CreateHosted(node as TXmlNode); end; LG Incocnito |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 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