13 - RPGLE - XML processing

DURATION:
3 Hours
ID:
13
?>
PRICE
2,000.00

INSTRUCTORS:

Mrs.Lalitha
Chief Trainer - AS/400 Expert

Categories

Advanced

Processing XML in RPGLE (RPG IV) involves parsing and generating XML documents. IBM iSeries provides tools and APIs to work with XML efficiently. Here are some common methods for XML processing in RPGLE:

1. Generating XML

You can generate XML by building the XML document as a string or using SQL functions.

Building XML as a String:

rpg

**FREE

DCL-S xmlString VARCHAR(1000);

// Start XML document

xmlString = ‘<?xml version=”1.0″ encoding=”UTF-8″?>’;

xmlString += ‘<customers>’;

// Add customer records

xmlString += ‘<customer>’;

xmlString += ‘<id>1001</id>’;

xmlString += ‘<name>John Doe</name>’;

xmlString += ‘</customer>’;

xmlString += ‘<customer>’;

xmlString += ‘<id>1002</id>’;

xmlString += ‘<name>Jane Smith</name>’;

xmlString += ‘</customer>’;

// End XML document

xmlString += ‘</customers>’;

// Output the XML

DSPLY xmlString;

*INLR = *ON;

RETURN;

Using SQL/XML Functions:

rpg

**FREE

EXEC SQL

  SET :xmlString = XMLSERIALIZE(

    XMLELEMENT(NAME “customers”,

      XMLAGG(

        XMLELEMENT(NAME “customer”,

          XMLELEMENT(NAME “id”, customer_id),

          XMLELEMENT(NAME “name”, customer_name)

        )

      )

    ) AS CLOB(1K) INCLUDING XMLDECLARATION

  )

  FROM customers;

DSPLY xmlString;

*INLR = *ON;

RETURN;

2. Parsing XML

Parsing XML can be done using the XML-INTO opcode, which reads XML data into a data structure.

Example XML:

xml

<customers>

  <customer>

    <id>1001</id>

    <name>John Doe</name>

  </customer>

  <customer>

    <id>1002</id>

    <name>Jane Smith</name>

  </customer>

</customers>

RPGLE Code:

rpg

**FREE

// Define data structures for XML parsing

DCL-DS customerDS;

  id INT(10);

  name CHAR(50);

END-DS;

DCL-DS customersDS DIM(2) LIKEDS(customerDS);

// XML document as string

DCL-S xmlString VARCHAR(1000);

xmlString = ‘<?xml version=”1.0″ encoding=”UTF-8″?>’;

xmlString += ‘<customers>’;

xmlString += ‘<customer>’;

xmlString += ‘<id>1001</id>’;

xmlString += ‘<name>John Doe</name>’;

xmlString += ‘</customer>’;

xmlString += ‘<customer>’;

xmlString += ‘<id>1002</id>’;

xmlString += ‘<name>Jane Smith</name>’;

xmlString += ‘</customer>’;

xmlString += ‘</customers>’;

// Parse the XML

XML-INTO customersDS %XML(xmlString);

// Display parsed data

DCL-S i INT(10);

FOR i = 1 TO %ELEM(customersDS);

  DSPLY ‘ID: ‘ + %CHAR(customersDS(i).id);

  DSPLY ‘Name: ‘ + customersDS(i).name;

ENDFOR;

*INLR = *ON;

RETURN;

3. Using SQL XML Functions

IBM iSeries also provides SQL/XML functions to query and manipulate XML data directly in SQL.

Querying XML Data:

rpg

**FREE

EXEC SQL

  SELECT XMLCAST(XMLQUERY(‘/customers/customer/name’ PASSING XMLPARSE(DOCUMENT :xmlString)) AS VARCHAR(50))

  INTO :customerName;

DSPLY customerName;

*INLR = *ON;

RETURN;

These methods allow you to handle XML data effectively in RPGLE, making it easier to integrate with modern web services and applications. If you have specific scenarios or need more detailed examples, feel free to ask!

Using C procedures in RPGLE allows you to perform complex file operations and leverage the extensive capabilities of C libraries. If you have any specific requirements or need further details, feel free to ask!

Leave a Reply

Your email address will not be published. Required fields are marked *