Recently I’ve got a question from a customer related to the PARSE statement introduced with Natural 6. The following simle program parses an XML file - here a WSDL file and displays the xml-path etc.
The code and the WSDL file is included below however you may parse other XML files…
I hope you find this example program useful. 8)
With best regards,
Michael Muenster
/* example program PARSE-P
/* PARSE an arbitrary XML file
/* the program requires SYSWEB as steplib
/* the ‘qotd.wsdl’ file must be placed in the RES directory
/* of the library where this program ist stored.
/*
DEFINE DATA LOCAL
01 XML-DATA (A) DYNAMIC
01 #XML-PATH (A) DYNAMIC
01 #XML-NAME (A) DYNAMIC
01 #XML-VALUE (A) DYNAMIC
END-DEFINE
FORMAT LS=120 PS=40
PERFORM W3READ-RESOURCE ’ ’ ‘qotd.wsdl’ XML-DATA
PARSE XML XML-DATA INTO PATH #XML-PATH
NAME #XML-NAME
VALUE #XML-VALUE
DISPLAY #XML-PATH (AL=60) #XML-NAME (AL=15) #XML-VALUE (AL=30) *PARSE-TYPE
END-PARSE
END
<?xml version="1.0"?>
<message name="getQuoteRequest" />
<message name="getQuoteResponse">
<part name="return" type="xsd:string"/>
</message>
<portType name="qotdPortType">
<operation name="getQuote">
<input name="getQuote" message="tns:getQuoteRequest"/>
<output name="getQuoteResponse" message="tns:getQuoteResponse"/>
</operation>
</portType>
<binding name="qotdBinding" type="tns:qotdPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getQuote">
<soap:operation soapAction="urn:xmethods-qotd#getQuote"/>
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:xmethods-qotd"/>
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:xmethods-qotd"/>
</output>
</operation>
</binding>
<service name="qotd">
<documentation>
Get a Quote of the Day
</documentation>
<port name="qotdPort" binding="tns:qotdBinding">
<soap:address location="http://webservices.codingtheweb.com/bin/qotd"/>
</port>
</service>
---------------------------------------------