-
XML-String per SQL interpretieren
Hallo,
die SQL-Möglichkeiten sind ja mit dem Release 7.3 erheblich erweitert worden. Deshalb dachte ich, es dürfte doch gar kein Problem sein, mit Hilfe von SQL einen XML-String zu interpretieren. Aber die Beispiele, die ich gefunden habe, sind alle sehr komplex. Geht das nicht irgendwie einfacher?
Wenn ich eine einfache XML-Struktur habe, also z.B.:
HTML-Code:
<zahlung>
<betrag>120.55</betrag>
<datum>15.05.2017</datum>
<zahlung>
Kann ich mir die Werte für betrag und datum nicht einfach mit einem SQL "select ... into" (oder wegen mir mit 2 getrennten SQL-Statements) auslesen? Ich würde der SQL-Funktion den String dann gerne als Host-Variable übergeben.
In den Beispielen sieht es immer so aus, als müsste der XML-String in einer Tabelle stehen und man müsste irgendwelche Headerinfos in der XML-Tabelle haben usw.
Ich weiß, dass ich das Problem auch mit RPG mittels xml-into lösen könnte. Das will ich hier aber nicht. Meine Frage geht in Richtung SQL.
-
Das musst Du schon mit der XMLTABLE Table-Funktion lösen.
Wo befindet sich denn Dein XML-Dokument?
Variable, XML-Spalte, IFS? Je nachdem musst Du beim passing unterschiedlich aufsetzten.
Sofern alle Informationen auf der gleichen Ebene sind, und Du mit dem xml-Namen zufrieden bist, könnte das SELECT-Statement etwa so aussehen.
Code:
SELECT *
From XMLTABLE('/zahlung/'
Passing XMLDOKUMENT
Columns "betrag" Dec(11, 2),
"datum" Date) x
Birgitta
-
Der XMLTABLE erwartet ein fertiges XML-Dokument, XMLPARSE liefert ein XML-Dokument.
XMLPARSE wiederum kann eine XML-Zeichenkette interpretieren.
Grob müsste also
select * from XMLTABLE(XMLPARSE('XML native Daten' ...) ...)
funktionieren.
-
Vielen Dank für eure Antworten. Ich denke, wir sind da auf dem richtigen Weg. Aber ganz klappt es noch nicht. Ich habe mal folgende Varianten probiert: (Sorry, dass die so schlecht formatiert sind, aber seltsamerweise fehlt in meinem Browser-Editor das "Code Einfügen" Symbol).
SELECT *
From XMLTABLE('/zahlung/'
Passing xmlparse('123.4515.05.2016')
Columns "betrag" Dec(11, 2),
"datum" Date) x
;
SELECT *
From XMLTABLE('/zahlung' passing xmlparse('123.4515.05.2016')
Columns "betrag" Dec(11, 2),
"datum" Date) x
;
Ich werde versuchen, mich da weiter zu hangeln.
-
Zitat von dschroeder
(Sorry, dass die so schlecht formatiert sind, aber seltsamerweise fehlt in meinem Browser-Editor das "Code Einfügen" Symbol).
Beim Antworten einfach auf ERWEITERT gehen, und schon steht es wieder zur Verfügung
-
Was soll "123.4515.05.2016" denn sein?
Das ist mit Sicherheit kein XML-String.
An dieser Stelle sollte dein obiger XML-Code stehen.
-
Zitat von Fuerchau
Was soll "123.4515.05.2016" denn sein?
Das ist mit Sicherheit kein XML-String.
An dieser Stelle sollte dein obiger XML-Code stehen.
Sorry, da hat der Browser Editor beim Speichern mal wieder die spitzen Klammern weggenommen.
Ich versuche mal, den XML-String hier so so posten, dass er auch dargestellt wird:
HTML-Code:
SELECT * From XMLTABLE('/zahlung/' Passing xmlparse('<zahlung><betrag>123.45</betrag><datum>15.05.2016</datum></zahlung>') Columns "betrag" Dec(11, 2), "datum" Date) x;
SELECT * From XMLTABLE('/zahlung' passing xmlparse('<zahlung><betrag>123.45</betrag><datum>15.05.2016</datum></zahlung>') Columns "betrag" Dec(11, 2), "datum" Date) x;
-
SELECT * From XMLTABLE('/zahlung' passing
xmlparse(document
'Dein XML-String' strip whitespace)
Columns "betrag" char(20),
"datum" char(10)) x
So funktionierts schon mal vom Grundsatz. Die Feldtypen kannst du ja dann entsprechend ausprobieren da einiges von der Umgebung abhängt.
-
Zitat von Fuerchau
SELECT * From XMLTABLE('/zahlung' passing
xmlparse(document
'Dein XML-String' strip whitespace)
Columns "betrag" char(20),
"datum" char(10)) x
So funktionierts schon mal vom Grundsatz. Die Feldtypen kannst du ja dann entsprechend ausprobieren da einiges von der Umgebung abhängt.
Klapp in der Tat!
Sehr gut.
Herzlichen Dank!
Similar Threads
-
By dibe in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 19-09-14, 07:11
-
By ILEMax in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 11-01-14, 09:32
-
By heynem in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 07-11-07, 11:53
-
By heynem in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 20-03-03, 09:15
-
By LaLeLi in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 19-06-02, 08:38
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks