Hi Scott,
I am trying to parse a xml file where a tag contains base64 data (a test tif file).
Can I use the approach in GetInnerDoc to decode the base64 data and write to the ifs file?
Seems like I get "rubbish" in the ifs file when i use base64_decode.
And I get base64 data when i skip the base64_decode.
Do I have to use iconv to convert the data before I use base64_decode?
Begsr ParseContent;
http_xmlReturnPtr(*ON);
filename = http_tempfile() + '.xml';
// Note: http_XmlStripCRLF(*ON/*OFF) controls whether or not
// the XML parser removes CR and LF characters from the
// Xml data that's passed to your 'Incoming' procedure.
http_XmlStripCRLF(*ON);
rc = http_parse_xml_stmf(%trim(Ma_xml)
: HTTP_XML_CALC
: *null
: %paddr(GetInnerDoc)
: %addr(filename));
if (rc <> 1);
http_crash();
endif;
ma_content = filename;
Endsr;
I use the GetInnerDoc subroutine.
P GetInnerDoc B export
D GetInnerDoc PI
D filename 50a varying
D depth 10I 0 value
D name 1024A varying const
D path 24576A varying const
D value likeds(Element_Val_t)
D Attrs * dim(32767)
D const options(*varsize)
D fd s 10i 0
D fd3 s 10I 0
D len s 10I 0
D buf s 32768A
D outbuf S 24576A
D outlen S 10I 0
/free
if path = '/soapenv:Envelope/soapenv:Body/'
+ 'rs:getContentResponse';
if (name = 'content:content');
fd = open( filename
: O_CREAT + O_TRUNC + O_WRONLY + O_CCSID
+ O_TEXTDATA + O_TEXT_CREAT
: S_IRUSR + S_IWUSR
: 819
: 0 );
// FIXME: Add error handling.
outlen = base64_decode( value.buf
: value.len
: %addr(outbuf)
: %size(outbuf) );
callp write(fd: %addr(outbuf): outlen);
callp close(fd);
endif;
endif;
/end-free
P E
The entire program and the xml file is enclosed in the zip file.
Best regards,
Magne
<<winmail.dat>>
----------------------------------------------------------------------- This is the FTPAPI mailing list. To unsubscribe, please go to: http://www.scottklement.com/mailman/listinfo/ftpapi -----------------------------------------------------------------------