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ę: