Einzelnen Beitrag anzeigen

WiPhi

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

XML Namespace in Databinding Wizard

  Alt 18. Mai 2020, 17:39
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.
  Mit Zitat antworten Zitat