· 

XML-Dateien schreiben mit RPG


Hallo! Mein Name ist Klaus Mödinger und ich bin Kommanditist der comSID GmbH & Co. KG.

 

In diesem Artikel stelle ich eine kleine RPG-Prozedur vor, die das Erstellen von XML-Dateien mit RPG erleichtern kann.

 

In XML haben einige Zeichen, z.B. das <-Zeichen besondere Bedeutungen. Im "Fließtext" müssen sie durch die entsprechenden "Entities" ersetzt werden, wenn ein XML-Parser keinen Schluckauf bekommen soll.

 

Hier eine kleine RPG-Routine, die das erledigt:

 

D xmlSpecial      PR          1536A    Varying
D pString                      256A    Value Varying


P xmlSpecial      B
D xmlSpecial      PI          1536A    Varying

 *  Worst case: Input string (256A) contains
 *              only apostrophes or double quotes
 *              Output string needs to be 6*256=1536

D pString                      256A    VALUE Varying
D
D str             S           1536A    Varying
D len             S             10I 0
D i               S             10I 0
D c               S              1A

  /FREE

     len = %LEN(%TRIM(pString));

     FOR i = 1 TO len;

        c = %SUBST(pString: i: 1);

        SELECT;                 
        WHEN c = '&';
           str = str + '&amp;';
        WHEN c = '>'; 
           str = str + '&gt;';
        WHEN c = '<';  
           str = str + '&lt;';
        WHEN c = '"';  
           str = str + '&quot;';
        WHEN c = '''';
           str = str + '&apos;';
        OTHER;
           str = str + c;
        ENDSL;                  

/END-FREE P E

Aufgerufen wird sie z.B. so:

xml = '<staffer>';
xml = xml + %TRIM(xmlSpecial(pStaffer));
xml = xml + '</staffer>' + KEoL;
xml = xml + KEoL;

Alternativen

Unter Umständen ist es einfacher, Texte mit einem CDATA-Block zu umhüllen.

 

Grundsätzlich ist es mühsam, sich selbst um die Tags und die spitzen Klammern zu kümmern.

 

Andere Sprachen bieten die Möglichkeit, aus XML-Schemata einen Objektbaum zu erstellen. Die XML-Struktur wird dann durch Setters zusammengebaut und die Serialisierung in eine XML-Datei ist dann ein einzigerAufruf. Vorteil: Tag- und Attributnamen stimmen immer und man muss sich nicht um das ganze "Drumherum" kümmern.

 

Beispiele in Java dafür wären  XmlBeans und JAXB.

 

 

Kommentar schreiben

Kommentare: 0