RXS_OpenDom()

This subprocedure initializes DOM parsing for a specified chunk of XML.

Subprocedure Prototype

D RXS_OpenDom     PR                  Extproc('RXS_OpenDom') Opdesc
D                                     Like(RXS_ParseDOMDS_t)

Returns an RXS_ParseDOMDS_t which contains information and pointers used by subsequent DOM parsing APIs.

D  pXML                               Like(RXS_Var16Mv_t) Const
D                                     Options(*Omit:*Varsize)

Chunk of XML to be used for subsequent DOM operations.

D  pDS                                LikeDS(RXS_OpenDomDS_t)
D                                     Options(*Nopass:*Varsize)

Holds RXS_OpenDomDS_t used to set up initial DOM parsing options.

Example Code


**FREE // This example demonstrates starting a DOM parsing session by using // RXS_OpenDom and then performing additional queries on the RXS_ParseDomDS_t // datastructure it returned. It's important to call RXS_CloseDom once DOM // parsing has been completed to free memory used by the DOM parser. Ctl-Opt ActGrp(*New) BndDir('RXSBND'); /COPY QRPGLECPY,RXSCB Dcl-Ds RootDomDS LikeDS(RXS_ParseDomDS_t); Dcl-Ds BookDomDS LikeDS(RXS_ParseDomDS_t); Dcl-S XPath Like(RXS_Var8Kv_t); Dcl-S Data Like(RXS_Var1Kv_t); Dcl-S x Uns(10); Dcl-S gXML Like(RXS_Var64Kv_t); gXML = '<?xml version="1.0" encoding="UTF-8"?>' + '<bookstore xmlns:test="testnamespace">' + '<book category="children">' + '<title lang="en"><![CDATA[Charlotte''s Web]]></title>' + '<author>E. B. White</author>' + '<year>1952</year>' + '<price>5.99</price>' + '<review><text>What a great book!</text></review>' + '<review><text>Highly recommended.</text></review>' + '</book>' + '<book category="cooking">' + '<title lang="en">Everyday Italian</title>' + '<author>Giada De Laurentiis</author>' + '<year>2005</year>' + '<price>30.00</price>' + '</book>' + '</bookstore>'; RXS_ResetDS( RootDomDS : RXS_DS_TYPE_PARSEDOM ); RootDomDS = RXS_OpenDom( gXML ); XPath = RXS_XPath( '/*:bookstore/*:book' ); RXS_ResetDS( BookDomDS : RXS_DS_TYPE_PARSEDOM ); BookDomDS = RXS_ParseDomToDom( XPath : RootDomDS ); for x = 1 to BookDomDS.NodeCount; XPath = RXS_XPath( '*:book[%u]/*:title' : x ); Data = RXS_ParseDomToText( XPath : BookDomDS ); RXS_JobLog( 'Title: %s' : Data ); endfor; RXS_CloseDom( RootDomDS ); return;

**FREE // This example demonstrates starting a DOM parsing session by using // RXS_OpenDom to parse an XML file stored in an IFS STMF, and then performing // additional queries on the RXS_ParseDomDS_t datastructure it returned. It's // important to call RXS_CloseDom once DOM parsing has been completed to free // memory used by the DOM parser. Ctl-Opt ActGrp(*New) BndDir('RXSBND'); /COPY QRPGLECPY,RXSCB Dcl-Ds RootDomDS LikeDS(RXS_ParseDomDS_t); Dcl-Ds BookDomDS LikeDS(RXS_ParseDomDS_t); Dcl-S XPath Like(RXS_Var8Kv_t); Dcl-S Data Like(RXS_Var1Kv_t); Dcl-S x Uns(10); RXS_ResetDS( RootDomDS : RXS_DS_TYPE_PARSEDOM ); RXS_ResetDS( OpenDomDS : RXS_DS_TYPE_OPENDOM ); OpenDomDS.Stmf = '/tmp/bookstore.xml'; // For this example, the IFS file /tmp/bookstore.xml contains // XML that looks like this: // <?xml version="1.0" encoding="UTF-8"?> // <bookstore xmlns:test="testnamespace"> // <book category="children"> // <title lang="en"><![CDATA[Charlotte's Web]]></title> // <author>E. B. White</author> // <year>1952</year> // <price>5.99</price> // <review><text>What a great book!</text></review> // <review><text>Highly recommended.</text></review> // </book> // <book category="cooking"> // <title lang="en">Everyday Italian</title> // <author>Giada De Laurentiis</author> // <year>2005</year> // <price>30.00</price> // </book> // </bookstore> RootDomDS = RXS_OpenDom( *Omit : OpenDomDS ); XPath = RXS_XPath( '/*:bookstore/*:book' ); RXS_ResetDS( BookDomDS : RXS_DS_TYPE_PARSEDOM ); BookDomDS = RXS_ParseDomToDom( XPath : RootDomDS ); for x = 1 to BookDomDS.NodeCount; XPath = RXS_XPath( '*:book[%u]/*:title' : x ); Data = RXS_ParseDomToText( XPath : BookDomDS ); RXS_JobLog( 'Title: %s' : Data ); endfor; RXS_CloseDom( RootDomDS ); return;

Data Structures

D RXS_OpenDomDS_t...
D                 DS                  Qualified Template Inz
 
D   ReturnedErrorInfo...
D                                     LikeDS(RXS_ReturnedErrorInfoDS_t) Inz
 
D   DataStructureType...
D                                5I 0 Inz(RXS_DS_TYPE_OPENDOM)

Internal use only

D   OnErrorMessageType...
D                                5I 0
 
D   InputCcsid...
D                               10I 0

Specifies the CCSID of the XML being parsed.

D   OutputCcsid...
D                               10I 0

Specifies the CCSID the parsed data will be converted to.

D   Stmf...
D                                     Like(RXS_Var1Kv_t)

Specifies an IFS path to an XML file to parse instead of the Input parm.

D RXS_ParseDomDS_t...
D                 DS                  Qualified Template Inz
 
D   ReturnedErrorInfo...
D                                     LikeDS(RXS_ReturnedErrorInfoDS_t) Inz
 
D   OnErrorMessageType...
D                               10I 0
 
D   InputCcsid...
D                               10I 0

Specifies the CCSID of the XML being parsed.

D   OutputCcsid...
D                               10I 0

Specifies the CCSID the parsed data will be converted to.

D   Stmf...
D                                     Like(RXS_Var1Kv_t)

Specifies an IFS path to an XML file to parse instead of the Input parm.

D   NodeCount                   10U 0

Contains the current count of XML nodes tracked by this data structure.

D   NodeType                    10I 0
 
D   xmlPtr                        *

Internal use only

D   docPtr                        *

Internal use only

D   contextPtr                    *

Internal use only

D   dictPtr                       *

Internal use only

D   currentPtr                    *

Internal use only

D   parentPtr                     *

Internal use only

D   Reserved                  4096A

Internal use only