PDA

View Full Version : ILE RPG V5R4M0 und SAX-Parser



HeymannJ
10-10-08, 19:30
Hallo *ALL,

Ich möchte mit einem ILE-RPG-Prog eine XML-Datei, die im IFS liegt, mit SAX parsen. Hat jemand Erfahrung damit ? Kann ich die Datei direkt aus dem IFS auslesen ?

Vielen Dank im voraus.

UFK
12-10-08, 20:33
Genau so habe ich es in Erinnerung (liegt aber schon etwas zurück)

Aber egal ob DOM- oder SAX-Parser, mir hat damals nicht gefallen, daß der XML-Input erstmal als IFS-Datei gespeichert werden sollte. Bei mir sollten Messages verarbeitet werden, die ich über MQ-Series empfangen wollte, und so habe ich flugs einen eigenen rekursiven XML-Parser geschrieben, der das ganze Parsen im RAM erledigen konnte. MQ-Series hat mir die Persistenz der Nachrichten ja auch ohne eignenen Speichervorgang garantiert.

Mein gedanklicher Ansatz war im Prinzip die logische Fortsetzung von SAX. Wenn ich schon On The Fly parse, dann wollte ich die Tags und ihre Inhalte auch unmittelbar verarbeiten ...

Input = Request-Message in XML
Parser, Adapter
kurzer Prozess
Response-Message = Output in XML

Guss Fritz

Peder
22-10-08, 13:47
Hallo
wir verarbeiten XML-Daten einer Kasse mit den XML-Parsing-Funktionen aus ILE/RPG (gibt es ab V5R4).
Das Funktioniert ohne Probleme direkt mit den IFS-Files. Ist auch nicht schwierig, die Dokumente mit Handler etc. zu verarbeiten. Allerdings muss ich dazu sagen, dass unsere Dokumente nur eine Ebene im XML haben.
Gruss
Peder

sim
22-10-08, 14:20
Wenn man nicht Java zur Verfügung hat und die Anzahl der Daten die per XML geliefert werden begrenzt ist, dann gehts auch ganz einfach (QaD) so:

Beispiel




d data ds qualified inz
d header likeds(header_ds) inz
d transactions likeds(transactions_ds) inz

d header_ds ds qualified inz
d file_name 100a inz
d export_date 100a inz
d record_count 10a inz

d transactions_ds...
d ds qualified inz
d tx likeds(tx_ds) inz
d dim(1000)

d tx_ds ds qualified inz
d prt 4a inz
d type 20a inz
d date 10a inz
d crd_no 16a inz
d crd_value 10a inz
....

// Daten einlesen
xml-into data %xml('home/blablub/abc.xml') :
'doc=file allowextra=yes allowmissing=yes');

...