# RXS_ParseDomToXml() This subprocedure retrieves the raw XML from a specific XPath. ## Subprocedure Prototype | Field | Description | |---|---| | ` D RXS_ParseDomToXml... D PR Extproc('RXS_ParseDomToXml') Opdesc D Like(RXS_Var16Mv_t) D Rtnparm` | Returns the XML subsection retrieved by the specified XPath. | | ` D pXPath Like(RXS_Var8Kv_t) Const D Options(*Varsize)` | XPath used to determine which nodes are retrieved into the RXS_ParseDomDS_t return data structure. | | ` D pDS LikeDS(RXS_ParseDomDS_t) D Options(*Varsize)` | RXS_ParseDomDS_t data structure, e.g. the "parent" structure. | ## Example Code ### Ex. 1 ```rpgle **FREE // This example demonstrates using RXS_ParseDomToXml to retrieve a section // of a parsed DOM structure as XML. 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 = '' + '' + '' + '<![CDATA[Charlotte''s Web]]>' + 'E. B. White' + '1952' + '5.99' + 'What a great book!' + 'Highly recommended.' + '' + '' + 'Everyday Italian' + 'Giada De Laurentiis' + '2005' + '30.00' + '' + ''; 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_ParseDomToXml( XPath : BookDomDS ); RXS_JobLog( 'Title: %s' : Data ); // This will output: // Title: <![CDATA[Charlotte's Web]]> // Title: Everyday Italian endfor; RXS_CloseDom( RootDomDS ); return; ``` ## Data Structures ### RXS_ParseDomDS_t | Field | Description | |---|---| | ` D RXS_ParseDomDS_t... D DS Qualified Template Inz` | | | ` D ReturnedErrorInfo... D LikeDS(RXS_ReturnedErrorInfoDS_t) Inz` | | | ` D DataStructureType... D 5I 0 Inz(RXS_DS_TYPE_PARSEDOM)` | **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 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** |