RXS_ParseDomToDom()
This subprocedure retrieves a new RXS_ParseDomDS_t data structure from a parent XML structure, allowing you to retrieve and work with a subset of a larger XML document.
Subprocedure Prototype
Copyrpgle |
Returns an RXS_ParseDomDS_t which contains information and pointers used by subsequent DOM parsing APIs. |
Copyrpgle |
XPath used to determine which nodes are retrieved into the RXS_ParseDomDS_t return data structure. |
Copyrpgle |
RXS_ParseDomDS_t data structure, e.g. the “parent” structure. |
Example Code
Copyrpgle**FREE
// This example demonstrates starting a DOM parsing session by using
// RXS_OpenDom and then retrieving a subsection of the DOM structure. This is
// usually helpful when working with large documents as it can make it easier
// to specify the correct XPaths to work with the sections of the document
// that you want to reach. 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 );
// Any subsequent XPaths used to query BookDomDS no longer
// need to include the /*:bookstore/ portion of the XPath.
for x = 1 to BookDomDS.NodeCount;
XPath = RXS_XPath( '*:book[%u]/*:title' : x );
Data = RXS_ParseDomToText( XPath : BookDomDS );
RXS_JobLog( 'Title: %s' : Data );
// This will output:
// Title: Charlotte's Web
// Title: Everyday Italian
endfor;
RXS_CloseDom( RootDomDS );
return;
Data Structures
Copyrpgle |
|
Copyrpgle |
|
Copyrpgle |
Internal use only |
Copyrpgle |
|
Copyrpgle |
Specifies the CCSID of the XML being parsed. |
Copyrpgle |
Specifies the CCSID the parsed data will be converted to. |
Copyrpgle |
Specifies an IFS path to an XML file to parse instead of the Input parm. |
Copyrpgle |
Contains the current count of XML nodes tracked by this data structure. |
Copyrpgle |
|
Copyrpgle |
Internal use only |
Copyrpgle |
Internal use only |
Copyrpgle |
Internal use only |
Copyrpgle |
Internal use only |
Copyrpgle |
Internal use only |
Copyrpgle |
Internal use only |
Copyrpgle |
Internal use only |