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 + '&'; WHEN c = '>'; str = str + '>'; WHEN c = '<'; str = str + '<'; WHEN c = '"'; str = str + '"'; WHEN c = ''''; str = str + '''; 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