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:
<?
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>
Von der Struktur her scheint das auch alles zu klappen, nur fehlen eben die Deklarationen der etwaigen Namespaces.
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
.
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!
Wer sucht, der findet. Wer länger sucht, findet mehr.