View Full Version : XML Verarbeitung in RPGLE
Hallo zusammen,
wenn ich bisher eine XML Datei zu verarbeiten hatte, habe ih mir ein kleines JAVA-Programm geschrieben, die die XML-Datei geparst haben.
Jetzt habe ich allerdings die Anforderung bekommen, dieses in RPGLE zu realisieren.
Der Aufbau der Datei ist im Grunde wie folgt:
<file>'<file>
FILE
HEADER
<header> VAR1 <var1>xxx</var1> /VAR1
VAR2 <var2>yyy /VAR2</var2>'
/HEADER
POS
</header>
VAR1 <var1>AAA</var1> /VAR1
VAR2 <var2><val2>BBB</val2></var2> /VAR2
/POS
POS
</pos>
<val1></val1> VAR1 <var1>CCC</var1> /VAR1
VAR2 <val2><var2>DDD</var2></val2></pos></file> /VAR2
<file>/POS
</file></file>
Die Version mit %XML-INTO fände ich persönlich nicht so toll. Lieber hätte ich eine Möglichkeit, die Tag's selber auszulesen und zu verarbeiten. In etwa so:
IF TAG = VAL1
var = VAL1.VALUE
ENDIF
Kann mir da jemand ein Beispielprogramm bzw. Tipps geben, wie man das realisieren könnte?
Danke an alle Helfenden!
RobertMack
18-07-12, 13:58
Den String mit %Scan verarbeiten, alles was zwischen
EVAL PosVon = %Scan('(TAG)':STRING) + 5 und
EVAL PosBis = %Scan('(/TAG)':STRING) - 1 liegt, gehört Dir!
5 = Länge '(TAG)'
(TAG) = eckige Klammern (haut hier mit der Darstellung nicht hin)
Hallo,
die Methode mit dem %scan finde ich für etwas gefährlich, was ist wenn XML-namespaces im spiel sind? oder in einem Kommentar etwas steht, das ausschaut wie ein XML-Tag...
Scott Klement hat sich über das Thema schon mal gedanken gemacht:
Presentations by Scott Klement (http://www.scottklement.com/presentations/#FREEXML)
In V7R1 ist es auch möglich per SQL XML zu importieren, was aber anscheinend deine Anforderungen nicht erlauben :(
Grüße
Leider nicht, da ich unter V6R1 arbeite.
Das mit dem SCAN finde ich auch etwas unglücklich, uns würde ich ungerne machen.
Mir schwebt wirklich sowas wi dem SAXParser vor also huptsächlich die Methoden
startElement, endElement, und characters für den Wert. da ich aber noch nie die RPG XML Verarbeitung gemacht habe, wiß ich leider nicht, wie man sich diese XML-Handler nachbauen kann usw.
Na mal schauen, ob mir der Scott helfen kann :)
Hast Du Dir eigentlich mal den OpCode XML-SAX angeschaut?
XML-SAX (Release 6.1) (http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/index.jsp?topic=/rzasd/sc0925081042.htm)
Birgitta
Bin gerade dabei mir die Doku von Scott Clement an. aber danke für den IBM Link, die sind ja sonst immer so versteckt! :)
Logic IT-Services
19-07-12, 08:07
Soeben über den Schreibtisch geflattert, vielleicht ist das was für Dich...
IBM Systems Magazine - Consuming XML Documents | IBM i | IBM Systems Magazine | iSeries AS/400 System i Power Systems| RPG, CGIDEV2, PRCBALREQ, XML-INTO, XML-SAX (http://www.ibmsystemsmag.com/ibmi/developer/rpg/XML_RPGpart2/?page=1)
(als Ergänzung zu Birgitta's Post)
IBM Link, die sind ja sonst immer so versteckt! :)
Wieso?
IBM i Information Center (für das entsprechende Release):
i5/OS Information Center - Release 6.1 (http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/index.jsp)
IBM i Information Center - Release 7.1 (http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp)
... und dann weiter z.B. Datenbank oder Programmierung
Übrigens Scott hießt Klement (mit K!)
Birgitta
RobertMack
19-07-12, 09:23
die Methode mit dem %scan finde ich für etwas gefährlich, was ist wenn XML-namespaces im spiel sind? oder in einem Kommentar etwas steht, das ausschaut wie ein XML-Tag...
Natürlich sehe ich das auch.
Jedoch sprach der Kollege von einer XML Datei und einem kleinen JAVA-Programm - das löst bei mir reflexartig den pragmatischen Ansatz aus.
Ansonsten würde ich niemals eine undokumentierte oder inhaltlich nicht klar definierte XML-Datei (Plausbilisierungen auf Tag-Ebene) in ein System rein lassen :)
So,
habe jetzt die ersten Ergebnisse vozuweisen :)
Umgesetzt wurde es mit XML-SAX!
Die Seite die mir wirklich weiter geholfen hat, war diese hier
] IBM RDiV7 (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r1/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/c0925086852.htm[/URL)
Habe die meiste Zeit mit dem Suchen der verschiedenen Event's gebraucht. Denn wenn nur die Elemente einen Wert haben, wird es schwierig das dann passend herrauszufinden.
Danke erstmal an alle die mr die Tipps in die richtige Richtung gegeben haben.