Für recht einfach gehaltene XML geht beides relativ flott.
Lesen:
Code:
 exec sql set option commit=*CHG;                                 
 exec sql declare Cursorname cursor for                                   
   select info_req.*                                             
   from xmltable('/Liste/Kunde'                   
passing xmlparse(document                                         
get_xml_file('/Pfad'))                   
        columns                                                   
 FELD1           varchar(20)      path 'BezeichnunginXML',               
 FELD2           decimal(11, 2)  path 'BezZwei',
 ....                   

 FELDN           decimal(5, 2)   path 'BezFeldN',       
               ) info_req;
Dann den Cursor fetchen und gut ists.

XML erzeugen:
Code:
D MeineXMLDatei        S                     SQLTYPE(XML_CLOB_FILE)
 
NAMING= *SYS, CLOSQLCSR= *ENDACTGRP; ** Zuerst legt man den Namen fest und gibt die Länge an. MeineXMLDatei_name = Hier steht der Name; MeineXMLDatei_nl = %len(%trim(Hier steht der Name)); MeineXMLDatei_fo = sqfovr; ** Im Anschluss weißt man die Dateifelder den XML-Feldern zu: exec sql select xmldocument(xmlgroup( Feld1 as "MeinErstesFeld", Feld2 as "MeinFeld2", ... FeldN as "MeinFeldN" order by Feld1 asc ** Das option row legt den Container und den XML-internen Pfad fest optionrow"Kunde"root"Liste")) into :MeineXMLDatei ** Zuletzt gibt man die Dateien, aus denen gelesen werden soll an from MeinePF where (Bedingung);
Klar kann man das Ganze noch komplexer machen, aber so hast du mal n Überblick