Aktualności i artykuły

Opublikowano: 14 marca 2016
Kategoria wpisu: produktyprogramowanie

Po prostu XML

Wśród wielu narzędzi które powstały aby wspomóc użytkowników serwera AS/400 przy tworzeniu plików XML trudno znaleźć takie, które nie wymagałoby poświęcenia godzin, a nawet dni na jego poznanie, opanowanie i zastosowanie w praktyce. Z pomocą każdemu programiście ILE RPG może przyjść prosta w użyciu, darmowa i świetnie udokumentowana biblioteka o nazwie IFSXML.

IFSXML to jak sugeruje nazwa, biblioteka wspomagająca tworzenie plików XML, które zostają umieszczone w systemie plików IFS serwera AS/400.

Narzędzie jest dosyć proste, pozwala na umieszczanie kolejnych elementów struktury sekwencyjnie, bez możliwość zmiany lub wyszukania już utworzonych elementów. Jego zaletą jest natomiast szybkość, niewielkie wymagania jeśli chodzi o zasoby a także licencja, pozwalająca na wykorzystanie i zmianę kodu, który dostarczony jest również w formie źródeł do własnej kompilacji.

Narzędzie cechuje między innymi:

  • możliwość uruchamiania począwszy od wersji V5R2 systemu operacyjnego OS/400;
  • możliwość tworzenia równolegle ponad setki plików XML (195  w V5R3);
  • nazwy elementów i atrybutów mogą mieć do 128 znaków, a wartości 16384;
  • formatowanie tworzonych dokumentów;
  • funkcje do monitorowanie i śledzenia wydajności;
  • łatwość w użyciu połączona z architekturą pozwalającą tworzyć wydajny kod;
  • dostępność w postaci kodu źródłowego wraz z przykładami użycia;

Proces instalacji narzędzia nie odbiega w niczym od typowego, a więc wymaga przesłania SAVEFILE-a na serwer i rozpakowania biblioteki. Jeśli pobierzemy wersję z kodami źródłowymi musimy sami wykonać kompilację, której proces jest opisany na stronie projektu. Gdy obiekty są dostępne, można skorzystać z dostarczonych przykładowych programów i przyjrzeć się bliżej oferowanym funkcjom.

A jak wygląda proces tworzenia prostego pliku XML można zobaczyć na poniższym przykładzie.

/free
 outFile = 'IFSXML01-'+%char(%timestamp())+'.xml';

 // Get a new handle
 hXml = ifsxml_new();

 // Define and test the ouput file
 if not ifsxml_createFile(hXml: outFile);

   // Display the error message on the current joblog
   ifsxml_errorJobLog(hXml);

   // Free the handle
   ifsxml_free(hXml);

   // Close current activation group.
   CEETREC();

 endif;

 // Define the root name
 ifsxml_setRootName(hXml: 'ifsxml');

 // Open element and add attribute to it
 ifsxml_openElement(hXml: 'element');
 ifsxml_addAttribute(hXml: 'attribute' : 'Value');

 // Add a element
 ifsxml_addElement(hXml: 'simple': 'value');

 // Close element opened with openElement()
 ifsxml_closeElement(hXml);

 // Close the document and the file
 ifsxml_close(hXml);

 // Free the handle
 ifsxml_free(hXml);

 // Close current activation group.
 CEETREC();

 *inlr = *on;
/end-free

Wynikowy plik XML będzie wyglądał następująco:

<?xml version="1.0" encoding="UTF-8"?>
<ifsxml>                              
 <element attribute="Value">          
  <simple>value</simple>              
 </element>                           
</ifsxml>                            

IFSXML jest dostępny na zasadach licencji Creative Commons Attribution 4.0 International, a jego strona domowa zawiera szczegółową specyfikację:

http://www.neditespas400.com/projects/ifsxml/

^