En aquest mòdul, aprendrem com treballar amb XML (eXtensible Markup Language) en RPG. L'XML és un format de dades molt utilitzat per a l'intercanvi d'informació entre sistemes diferents. Aprendre a gestionar XML és essencial per a la integració de RPG amb altres tecnologies modernes.

Objectius del Mòdul

  • Comprendre què és XML i per què és important.
  • Aprendre a analitzar i generar documents XML en RPG.
  • Utilitzar eines i biblioteques per treballar amb XML.
  • Implementar exemples pràctics de gestió d'XML.

Continguts

Què és XML?

XML (eXtensible Markup Language) és un llenguatge de marques que defineix un conjunt de regles per a l'estructuració de documents de manera que siguin llegibles tant per humans com per màquines. És àmpliament utilitzat per a l'intercanvi de dades entre sistemes diferents.

Característiques Clau d'XML

  • Auto-descriptiu: Les etiquetes defineixen el contingut.
  • Flexible: Pot ser utilitzat per a representar qualsevol tipus de dades.
  • Estandarditzat: És un estàndard de la W3C.

Exemple d'XML

<empleat>
    <nom>Joan</nom>
    <càrrec>Desenvolupador</càrrec>
    <salari>50000</salari>
</empleat>

Anàlisi d'XML en RPG

Per analitzar XML en RPG, podem utilitzar diverses tècniques i biblioteques. Una de les més comunes és l'ús de l'API XML-INTO.

Exemple d'Anàlisi d'XML

Dcl-S xmlData Pointer;
Dcl-S xmlString Varchar(1000);
Dcl-Ds empleat Qualified;
  nom Varchar(50);
  càrrec Varchar(50);
  salari Packed(7:2);
End-Ds;

xmlString = '<empleat><nom>Joan</nom><càrrec>Desenvolupador</càrrec><salari>50000</salari></empleat>';
xmlData = %Addr(xmlString);

XML-INTO empleat %XML(xmlData);

Dsply ('Nom: ' + empleat.nom);
Dsply ('Càrrec: ' + empleat.càrrec);
Dsply ('Salari: ' + %Char(empleat.salari));

Explicació del Codi

  • Dcl-S: Declara variables.
  • Dcl-Ds: Declara una estructura de dades.
  • XML-INTO: Analitza l'XML i omple l'estructura de dades.

Generació d'XML en RPG

Generar XML en RPG implica crear una cadena de text que segueixi l'estructura XML desitjada.

Exemple de Generació d'XML

Dcl-S xmlString Varchar(1000);
Dcl-Ds empleat Qualified;
  nom Varchar(50);
  càrrec Varchar(50);
  salari Packed(7:2);
End-Ds;

empleat.nom = 'Joan';
empleat.càrrec = 'Desenvolupador';
empleat.salari = 50000;

xmlString = '<empleat>';
xmlString += '<nom>' + empleat.nom + '</nom>';
xmlString += '<càrrec>' + empleat.càrrec + '</càrrec>';
xmlString += '<salari>' + %Char(empleat.salari) + '</salari>';
xmlString += '</empleat>';

Dsply (xmlString);

Explicació del Codi

  • Concatenació de cadenes: Construïm l'XML concatenant cadenes de text.
  • %Char: Converteix el valor numèric a cadena de text.

Eines i Biblioteques per a XML

Hi ha diverses eines i biblioteques que poden ajudar a treballar amb XML en RPG:

  • XML-INTO: Per analitzar XML.
  • XML-SAX: Per a l'anàlisi basat en esdeveniments.
  • CGIDEV2: Una biblioteca que facilita la generació d'XML.

Exemples Pràctics

Exemple 1: Anàlisi d'XML amb XML-INTO

Dcl-S xmlData Pointer;
Dcl-S xmlString Varchar(1000);
Dcl-Ds empleat Qualified;
  nom Varchar(50);
  càrrec Varchar(50);
  salari Packed(7:2);
End-Ds;

xmlString = '<empleat><nom>Joan</nom><càrrec>Desenvolupador</càrrec><salari>50000</salari></empleat>';
xmlData = %Addr(xmlString);

XML-INTO empleat %XML(xmlData);

Dsply ('Nom: ' + empleat.nom);
Dsply ('Càrrec: ' + empleat.càrrec);
Dsply ('Salari: ' + %Char(empleat.salari));

Exemple 2: Generació d'XML

Dcl-S xmlString Varchar(1000);
Dcl-Ds empleat Qualified;
  nom Varchar(50);
  càrrec Varchar(50);
  salari Packed(7:2);
End-Ds;

empleat.nom = 'Joan';
empleat.càrrec = 'Desenvolupador';
empleat.salari = 50000;

xmlString = '<empleat>';
xmlString += '<nom>' + empleat.nom + '</nom>';
xmlString += '<càrrec>' + empleat.càrrec + '</càrrec>';
xmlString += '<salari>' + %Char(empleat.salari) + '</salari>';
xmlString += '</empleat>';

Dsply (xmlString);

Exercicis Pràctics

Exercici 1: Anàlisi d'XML

Analitza el següent XML i mostra el nom i el salari de l'empleat:

<empleat>
    <nom>Maria</nom>
    <càrrec>Analista</càrrec>
    <salari>60000</salari>
</empleat>

Solució

Dcl-S xmlData Pointer;
Dcl-S xmlString Varchar(1000);
Dcl-Ds empleat Qualified;
  nom Varchar(50);
  càrrec Varchar(50);
  salari Packed(7:2);
End-Ds;

xmlString = '<empleat><nom>Maria</nom><càrrec>Analista</càrrec><salari>60000</salari></empleat>';
xmlData = %Addr(xmlString);

XML-INTO empleat %XML(xmlData);

Dsply ('Nom: ' + empleat.nom);
Dsply ('Salari: ' + %Char(empleat.salari));

Exercici 2: Generació d'XML

Genera un XML per a un empleat amb les següents dades:

  • Nom: Pere
  • Càrrec: Gerent
  • Salari: 75000

Solució

Dcl-S xmlString Varchar(1000);
Dcl-Ds empleat Qualified;
  nom Varchar(50);
  càrrec Varchar(50);
  salari Packed(7:2);
End-Ds;

empleat.nom = 'Pere';
empleat.càrrec = 'Gerent';
empleat.salari = 75000;

xmlString = '<empleat>';
xmlString += '<nom>' + empleat.nom + '</nom>';
xmlString += '<càrrec>' + empleat.càrrec + '</càrrec>';
xmlString += '<salari>' + %Char(empleat.salari) + '</salari>';
xmlString += '</empleat>';

Dsply (xmlString);

Conclusió

En aquest mòdul, hem après els conceptes bàsics de la gestió d'XML en RPG, incloent l'anàlisi i la generació de documents XML. També hem vist com utilitzar eines i biblioteques per facilitar aquestes tasques. Amb els exemples i exercicis pràctics, hauríeu de tenir una bona comprensió de com treballar amb XML en RPG.

© Copyright 2024. Tots els drets reservats