-
XML einlesen mit XMLTABLE: übergeordnete Werte zu Gruppen hinzufügen.
Hallo zusammen,
ich möchte gerne aus einer XML mit diesem Aufbau:
Code:
<Gruppe>
<Gruppennummer>5 <Gruppennummer>
<Angestellte>
<Namen>
<Vorname>Max <Vorname>
<Name>Mustermann <Name>
<Namen>
<Namen>
<Vorname>Max <Vorname>
<Name>Mustermann <Name>
<Namen>
<Gruppe>
eine Liste mit Gruppennummer, Name und Vorname erhalten.
Es kann allerdings unendlich viele Elemente "Namen" geben.
Mein erster Versuch war:
Code:
select Name, Vorname, Gruppennummer
from (values(xmlparse(document
get_xml_file(trim('//Beispiele/1.xml'))))) as xmlfile(BSP1),
xmltable('$BSP1/*:ExportFile/*:Gruppe'
passing xmlfile.BSP1 as "BSP1"
columns
Vorname varchar(64) default ''
path'*:Angestellte/*:Namen/*:Vorname',
Name varchar(64) default ''
path'*:Angestellte/*:Namen/*:Name',
Gruppe integer default 0 path'../Gruppennummer'
) as BSP1
leider wirft mir das
[SQ16003] Ein Ausdruck des Datentyps ( item(), item()+) kann nicht verwendet werden, wenn der Datentyp item() für den Kontext verwendet wird.
Nun dachte ich, ich könne einfach den Pfad eine Ebene tiefer ziehen:
Code:
select Name, Vorname, Gruppennummer
from (values(xmlparse(document
get_xml_file(trim('//Beispiele/1.xml'))))) as xmlfile(BSP1),
xmltable('$BSP1/*:ExportFile/*:Gruppe/*:Angestellte/*:Namen'
passing xmlfile.BSP1 as "BSP1"
columns
Vorname varchar(64) default ''
path'*:Vorname',
Name varchar(64) default ''
path'*:Name',
Gruppe integer default 0 path'../Gruppennummer'
) as BSP1
Diese Abfrage funktioniert für die Namen, ich erhalte jedoch leider keine Gruppennummer.
Kennt sich jemand damit aus? Habe schon eine Weile vergeblich gesucht und getestet.
Viele Grüße und besten Dank!
-
Ich denke, dass XMLTABLE da eher das liefert, was du benötigst (SQL-Handbuch).
In der Spaltendefinition kann man dann nämlich noch weitere Pfade angeben:
Code:
SELECT U."PO ID", U."Part #", U."Product Name",
U."Quantity", U."Price", U."Order Date"
FROM PURCHASEORDER P,
XMLTABLE(XMLNAMESPACES(’http://podemo.org’ AS "pod"),
’$po/PurchaseOrder/itemlist/item’ PASSING P.PORDER AS "po"
COLUMNS "PO ID" INTEGER PATH ’../../@POid’,
"Part #" CHAR(6) PATH ’product/@pid’,
"Product Name" CHAR(50) PATH ’product/pod:name’,
"Quantity" INTEGER PATH ’quantity’,
"Price" DECIMAL(9,2) PATH ’product/pod:price’,
"Order Date" TIMESTAMP PATH ’../../dateTime’
) AS U
WHERE P.STATUS = ’NEW’
-
Folgende Statements habe ich mit Erfolg getestet
PHP-Code:
create or replace variable mylib.xml_var varchar(10000) ccsid 1208;
values mylib.xml_var;
set mylib.xml_var = '<Gruppe> <Gruppennummer>5</Gruppennummer> <Angestellte> <Namen> <Vorname>Max</Vorname> <Name>Mustermann</Name> </Namen>
<Namen> <Vorname>Heike</Vorname> <Name>Musterfrau</Name> </Namen> </Angestellte> </Gruppe>';
SELECT * FROM XMLTABLE('/Gruppe/Angestellte/Namen' PASSING XMLPARSE( DOCUMENT mylib.xml_var ) COLUMNS gruppennummer integer PATH '../../Gruppennummer', vorname varchar(20) PATH 'Vorname', name varchar(20) PATH 'Name' ) AS RESULT;
Herzliche Grüße
Rainer
-
Hallo,
Vielen Dank euch! so funktioniert es. '../../Gruppennummer'
Scheinbar kann man mi ../ jeweils immer eine Ordnung nach oben wechseln.
Viele Grüße,
Daniel
-
Mit diesem Statement kann man die Daten direkt aus dem IFS lesen und parsen
PHP-Code:
SELECT * FROM XMLTABLE('/Gruppe/Angestellte/Namen' PASSING XMLPARSE( DOCUMENT get_clob_from_file('/home/import/xml/angestellte.xml') ) COLUMNS gruppennummer integer PATH '../../Gruppennummer', vorname varchar(20) PATH 'Vorname', name varchar(20) PATH 'Name' ) AS RESULT;
Similar Threads
-
By Flappes in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 23-05-17, 09:07
-
By _MG_ in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 31-12-15, 10:52
-
By dd3tj in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 26-02-15, 06:38
-
By stemmerter in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 22-02-14, 16:33
-
By moeller400 in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 28-06-01, 06:41
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