[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: XML Writer Service program



Nicolas,

Take a look at the attached source listing. I believe the procedures
BegTag, EndTag, AddElement, AddEmptyElem, AddData are doing what you
describe. I found them to be a useful shorthand to build up XML. It may
serve as a starting point for a general solution.

A sample of the xml it builds is attached as well

--rmc




-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
[mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Nicolas
Machado
Sent: Monday, July 06, 2009 3:34 PM
To: HTTPAPI and FTPAPI Projects
Subject: XML Writer Service program

Hi,
I'm starting a project that need to write xml files.
I know that there is no mora "rocket science" that wrinting to a stream 
file in teh IFS.

But I'm wondering is someone has developed something like:

   xml =  pCreateXmlObject();
    pWriteStartElement(xml : 'Invoice') ;
    pWriteTag(xml : 'InvNro' : $InvoiceNumber ) ;
    pWriteEndElement(xml)


To for example create this xml
    <Invoice>
          <InvNr>some value</InvNr>
    </Invoice>

If anyone has something , please let me know.

-- 
.::.
Nicolas Machado
Metodo Argentina S.A.
_____________________
Tel: 02262 527431
Necochea, Buenos Aires.

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
ÿþ    100       *  @BGNCL                                                                                                 10/20/08

    200       *    CRTBNDRPG  PGM(&O/&N) SRCFILE(&L/&F)  DBGVIEW(*SOURCE) DFTACTGRP(*NO)                                10/20/08

    300       *  @ENDCL                                                                                                 10/20/08

    400       *_________________________________________________________________________                                10/20/08

    500       *  Description: Build XML for Account Updated Notification - Shipping Addr                                11/18/08

    600       *  Author     : rmc - 18 Nov 2008                                                                         11/18/08

    700       *  Task       : mac.com                                                                                   10/20/08

    800       *  Changes    :                                                                                           11/18/08

    900       *_________________________________________________________________________                                10/20/08

   1000      H debug option(*nodebugio)                                                                                 10/20/08

   1100       *_________________________________________________________________________                                10/22/08

   1200      FAARWSIC   if   e           k disk                                                                         10/22/08

   1300       *_________________________________________________________________________                                10/20/08

   1400      D wiRqs           s              8                                                                         11/18/08

   1500      D woRtn           s              8                                                                         11/18/08

   1600      D wRtn            s              8                                                                         10/20/08

   1700      D wPCD            s                   like(IAPCDB)                                                         11/16/08

   1800      D wXML            s          32768    varying                                                              10/22/08

   1900      D wXMLD           s          32768                                                                         11/13/08

   2000      D wdWIAC        e ds                  ExtName(AARWIAC)                                                     10/20/08

   2100      D wdCADR        e ds                  ExtName(AARCADR)                                                     11/18/08

   2200                                                                                                                 11/12/08

   2300      D pgmd          esds                  ExtName(CasPgmD)                                                     10/20/08

   2400                                                                                                                 10/20/08

   2500      D BegTag          pr                                                                                       10/20/08

   2600      D    wTagName                  128    value                                                                10/20/08

   2700                                                                                                                 11/12/08

   2800      D EndTag          pr                                                                                       10/20/08

   2900      D    wTagName                  128    value                                                                10/20/08

   3000                                                                                                                 11/12/08

   3100      D AddElement      pr                                                                                       10/20/08

   3200      D    wTagName                  128    value                                                                10/20/08

   3300      D    wElement                  256    value                                                                10/20/08

   3400                                                                                                                 11/12/08

   3500      D AddEmptyElem    pr                                                                                       10/20/08

   3600      D    wTagName                  128    value                                                                10/20/08

   3700                                                                                                                 11/12/08

   3800      D AddData         pr                                                                                       10/20/08

   3900      D    wData                     256    value                                                                10/20/08

   4000       *_________________________________________________________________________                                10/20/08

   4100       * Main                                                                                                    10/20/08

   4200       *_________________________________________________________________________                                10/20/08

   4300      C                   Clear                   woRtn                                                          10/20/08

   4400      C                   Exsr      BuildXML                                                                     10/20/08

   4500      C                   Return                                                                                 10/20/08

   4600       *_________________________________________________________________________                                10/20/08

   4700       * Build XML                                                                                               10/20/08

   4800       *_________________________________________________________________________                                10/20/08

   4900      C     BuildXML      Begsr                                                                                  10/20/08

   5000      C                   Clear                   wXML                                                           10/20/08

   5100      C                   Exsr      AddRootNode                                                                  11/18/08

   5200                                                                                                                 11/18/08

   5300      C                   Callp     AddElement('AccountId' : %editc(IACST:'X'))                                  10/20/08

   5400       * Beg Addresses                                                                                           11/18/08

   5500      C                   Callp     BegTag('Addresses')                                                          10/20/08

   5600       *    Beg Billing                                                                                          11/18/08

   5700      C                   Callp     BegTag('Address')                                                            11/12/08

   5800      C                   Callp     AddEmptyElem('AddressID i:nil="true"')                                       11/12/08

   5900      C                   Callp     AddElement('City' : IACTYB)                                                  10/20/08

   6000      C                   Callp     AddElement('CompanyName' : IACMPB)                                           01/16/09

   6100      C                   Callp     AddElement('Country' : IACNYB)                                               10/20/08

   6200      C                   Callp     AddElement('DayPhone' : IAPHNB)                                              10/20/08

   6300      C                   Callp     AddElement('Email' : IAEMLB)                                                 10/20/08

   6400      C                   Callp     AddElement('FirstName' : IAFNMB)                                             10/20/08

   6500      C                   Callp     AddElement('IsBillTo' : '1')                                                 10/20/08

   6600      C                   Callp     AddElement('IsDelete' : '0')                                                 11/12/08

   6700      C                   Callp     AddElement('LastName' : IALNMB)                                              10/20/08

   6800                                                                                                                 10/20/08

   6900 B001 C                   If        IAMINB = *blanks                                                             10/20/08

   7000  001 C                   Callp     AddEmptyElem('MiddleInitial')                                                10/20/08

   7100 X001 C                   Else                                                                                   10/20/08

   7200  001 C                   Callp     AddElement('MiddleInitial' : IAMINB)                                         10/20/08

   7300 E001 C                   Endif                                                                                  10/20/08

   7400                                                                                                                 10/20/08

   7500      C                   Callp     AddElement('State' : IASTAB)                                                 10/20/08

   7600      C                   Callp     AddElement('Street1' : IAAD1B)                                               10/20/08

   7700      C                   Callp     AddElement('Street2' : IAAD2B)                                               10/20/08

   7800      C                   Callp     AddEmptyElem('TaxExemptCC i:nil="true"')                                     03/11/09

   7900      C                   Callp     AddElement('ZipCode' : IAPCDB)                                               10/20/08

   8000      C                   Callp     EndTag('Address')                                                            10/20/08

   8100       *    End Billing                                                                                          11/18/08

   8200                                                                                                                 11/12/08

   8300       *    Beg Shipping                                                                                         11/18/08

   8400      C                   Exsr      AddShipping                                                                  03/05/09

   8500                                                                                                                 10/20/08

   8600       *    End Shipping                                                                                         11/18/08

   8700       * End Addresses                                                                                           10/20/08

   8800      C                   Callp     EndTag('Addresses')                                                          10/20/08

   8900                                                                                                                 10/20/08

   9000      C                   if        IAEMLE <> *blanks                                                            04/21/09

   9100      C                   Callp     AddElement('EdRepEmail' : IAEMLE)                                            04/21/09

   9200      C                   else                                                                                   04/21/09

   9300      C                   Callp     AddEmptyElem('EdRepEmail i:nil="true"')                                      04/21/09

   9400      C                   endif                                                                                  04/21/09

   9500                                                                                                                 04/21/09

   9600      C                   Callp     AddElement('IsDelete' : IADLT)                                               10/20/08

   9700      C                   Callp     AddElement('IsTaxExempt': IACMPE)                                            11/12/08

   9800                                                                                                                 04/02/09

   9900      C                   if        IATXE <> *blanks                                                             04/02/09

  10000      C                   Callp     AddElement('TaxExemptNumber' : IATXE)                                        04/02/09

  10100      C                   else                                                                                   04/02/09

  10200      C                   Callp     AddEmptyElem('TaxExemptNumber i:nil="true"')                                 04/02/09

  10300      C                   endif                                                                                  04/02/09

  10400                                                                                                                 04/02/09

  10500      C                   Callp     EndTag('CommercialAccount')                                                  10/20/08

  10600                                                                                                                 11/18/08

  10700      C                   Endsr                                                                                  10/20/08

  10800       *_________________________________________________________________________                                11/18/08

  10900       * Set Root Node                                                                                           11/18/08

  11000       *_________________________________________________________________________                                11/18/08

  11100      C     AddRootNode   Begsr                                                                                  11/18/08

  11200      C     'SVCACTNTF '  Chain     AARWSIC                                                                      11/18/08

  11300 B001 C                   If        %found(AARWSIC)                                                              11/18/08

  11400  001 C                   Eval      wXML = %trim(ICROOT)                                                         11/18/08

  11500 X001 C                   Else                                                                                   11/18/08

  11600  001 C                   Eval      woRtn = 'ERROR'                                                              11/18/08

  11700  001 C                   Return                                                                                 11/18/08

  11800 E001 C                   Endif                                                                                  11/18/08

  11900      C                   Endsr                                                                                  11/18/08

  12000       *_________________________________________________________________________                                11/18/08

  12100       * Add Shipping                                                                                            11/18/08

  12200       *_________________________________________________________________________                                11/18/08

  12300      C     AddShipping   Begsr                                                                                  11/18/08

  12400  002 C                   Callp     BegTag('Address')                                                            11/18/08

  12500  002 C                   Callp     AddElement('AddressId' : %editc(ADADSQ:'X'))                                 11/18/08

  12600  002 C                   Callp     AddElement('City' : ADCTY)                                                   11/18/08

  12700  002 C                   Callp     AddElement('CompanyName' : ADCMP)                                            11/18/08

  12800  002 C                   Callp     AddElement('Country' : ADCNY)                                                11/18/08

  12900  002 C                   Exsr      SetShipPhone                                                                 11/18/08

  13000  002 C                   Callp     AddElement('DayPhone' : wShpPhn)                                             11/18/08

  13100  002 C                   Callp     AddElement('Email' : ADEML)                                                  11/18/08

  13200  002 C                   Callp     AddElement('FirstName' : ADFNM)                                              11/18/08

  13300  002 C                   Callp     AddElement('IsBillTo' : '0')                                                 11/18/08

  13400                                                                                                                 11/18/08

  13500      C                   if        wiRQS = 'DELETE  '                                                           11/18/08

  13600  002 C                   Callp     AddElement('IsDelete' : '1')                                                 11/18/08

  13700      C                   else                                                                                   11/18/08

  13800  002 C                   Callp     AddElement('IsDelete' : '0')                                                 11/18/08

  13900      C                   endif                                                                                  11/18/08

  14000                                                                                                                 11/18/08

  14100  002 C                   Callp     AddElement('LastName' : ADLNM)                                               11/18/08

  14200  002                                                                                                            11/18/08

  14300 B003 C                   If        ADMIN = *blanks                                                              11/18/08

  14400  003 C                   Callp     AddEmptyElem('MiddleInitial')                                                11/18/08

  14500 X003 C                   Else                                                                                   11/18/08

  14600  003 C                   Callp     AddElement('MiddleInitial' : ADMIN)                                          11/18/08

  14700 E003 C                   Endif                                                                                  11/18/08

  14800  002                                                                                                            11/18/08

  14900  002 C                   Callp     AddElement('State' : ADSTA)                                                  11/18/08

  15000  002 C                   Callp     AddElement('Street1' : ADADR1)                                               11/18/08

  15100  002 C                   Callp     AddElement('Street2' : ADADR2)                                               11/18/08

  15200  001                                                                                                            03/11/09

  15300 B002 C                   If        ADCRDX <> 0                                                                  03/11/09

  15400  001 C                   Callp     AddElement('TaxExemptCC':%editc(ADCRDX:'X'))                                 03/11/09

  15500      C                   else                                                                                   03/11/09

  15600      C                   Callp     AddEmptyElem('TaxExemptCC i:nil="true"')                                     03/11/09

  15700 E002 C                   Endif                                                                                  03/11/09

  15800                                                                                                                 03/11/09

  15900  002 C                   Eval      wPCD = ADPCD5 + ADPCD4                                                       11/18/08

  16000  002 C                   Callp     AddElement('ZipCode' : wPCD)                                                 11/18/08

  16100                                                                                                                 03/05/09

  16200  002 C                   Callp     EndTag('Address')                                                            11/18/08

  16300      C                   Endsr                                                                                  11/18/08

  16400       *_________________________________________________________________________                                11/12/08

  16500       * Set JBS Phone Number                                                                                    11/12/08

  16600       *_________________________________________________________________________                                11/12/08

  16700      C     SetShipPhone  Begsr                                                                                  11/12/08

  16800                                                                                                                 11/13/08

  16900      C                   Clear                   wShpPhn          20                                            11/12/08

  17000      C                   Eval      wShpPhn = ADEXG + ADPHN                                                      11/13/08

  17100                                                                                                                 11/13/08

  17200       * Prepend Area code, if any                                                                               11/13/08

  17300 B001 C                   If        ADACD <> *blanks                                                             11/13/08

  17400  001 C                   Eval      wShpPhn = ADACD + wShpPhn                                                    11/13/08

  17500 E001 C                   Endif                                                                                  11/12/08

  17600                                                                                                                 11/12/08

  17700      C                   Endsr                                                                                  11/12/08

  17800       *_________________________________________________________________________                                10/20/08

  17900       * Parameters                                                                                              10/20/08

  18000       *_________________________________________________________________________                                10/20/08

  18100      C     plist         Begsr                                                                                  10/20/08

  18200      C     *entry        Plist                                                                                  10/20/08

  18300      C                   Parm                    wiRqs                                                          11/18/08

  18400      C                   Parm                    woRtn                                                          10/20/08

  18500      C                   Parm                    wdWIAC                                                         10/20/08

  18600      C                   Parm                    wdCADR                                                         11/18/08

  18700      C                   Parm                    wXML                                                           10/20/08

  18800      C                   Endsr                                                                                  10/20/08

  18900       *-------------------------------------------------------------------------                                10/20/08

  19000      P BegTag          b                                                                                        10/20/08

  19100       *_________________________________________________________________________

  19200      D BegTag          pi                                                                                       10/20/08

  19300      D    wTag                      128    value                                                                10/20/08

  19400       *-------------------------------------------------------------------------                                10/20/08

  19500      C                   Eval      wXML = %trim(wXML) + '<' + %trim(wTag) + '>'                                 10/20/08

  19600      P                 E                                                                                        10/20/08

  19700       *-------------------------------------------------------------------------                                10/20/08

  19800      P EndTag          b                                                                                        10/20/08

  19900       *_________________________________________________________________________

  20000      D EndTag          pi                                                                                       10/20/08

  20100      D    wTag                      128    value                                                                10/20/08

  20200       *-------------------------------------------------------------------------                                10/20/08

  20300      C                   Eval      wXML = %trim(wXml) + '</' + %trim(wTag) + '>'                                10/20/08

  20400      P                 E                                                                                        10/20/08

  20500       *-------------------------------------------------------------------------                                10/20/08

  20600      P AddData         b                                                                                        10/20/08

  20700       *_________________________________________________________________________

  20800      D AddData         pi                                                                                       10/20/08

  20900      D    wData                     256    value                                                                10/20/08

  21000       *-------------------------------------------------------------------------                                10/20/08

  21100                                                                                                                 05/06/09

  21200       * Call to Escape XML entities                                                                             05/06/09

  21300      C                   call      'ESCXMLNTY'                                                                  05/06/09

  21400      C                   parm                    wRtnEsc           8                                            05/06/09

  21500      C                   parm                    wData                                                          05/06/09

  21600                                                                                                                 05/06/09

  21700      C                   Eval      wXML = %trim(wXml) + %trim(wData)                                            10/20/08

  21800      P                 E                                                                                        10/20/08

  21900       *-------------------------------------------------------------------------                                10/20/08

  22000      P AddElement      b                                                                                        10/20/08

  22100       *_________________________________________________________________________

  22200      D AddElement      pi                                                                                       10/20/08

  22300      D    wTag                      128    value                                                                10/20/08

  22400      D    wData                     256    value                                                                10/20/08

  22500       *-------------------------------------------------------------------------                                10/20/08

  22600      C                   Callp     BegTag(wTag)                                                                 10/20/08

  22700      C                   Callp     AddData(wData)                                                               10/20/08

  22800      C                   Callp     EndTag(wTag)                                                                 10/20/08

  22900      P                 E                                                                                        10/20/08

  23000       *-------------------------------------------------------------------------                                10/20/08

  23100      P AddEmptyElem    b                                                                                        10/20/08

  23200       *_________________________________________________________________________

  23300      D AddEmptyElem    pi                                                                                       10/20/08

  23400      D    wTag                      128    value                                                                10/20/08

  23500       *-------------------------------------------------------------------------                                10/20/08

  23600      C                   Eval      wXML =%trim(wXml) + '<' + %trim(wTag) + '/>'                                 10/20/08

  23700      P                 E                                                                                        10/20/08

  23800       *-------------------------------------------------------------------------                                10/20/08

<CommercialAccount xmlns="http://schemas.datacontract.org/2004/07/JBS.SiteManager.MF.WebServices.CommericalAccountService"; xmlns:i="http://www.w3.org/2001/XMLSchema-instance";><AccountId>1646788</AccountId><Addresses><Address><AddressID i:nil="true"/><City>New Carrollton</City><CompanyName>Ima Nedrep</CompanyName><Country>US</Country><DayPhone>3014443333</DayPhone><Email>rmc@xxxxxxxxxxxxx</Email><FirstName>Music</FirstName><IsBillTo>1</IsBillTo><IsDelete>0</IsDelete><LastName>Educator</LastName><MiddleInitial/><State>MD</State><Street1>128 Riverdale Rd</Street1><Street2></Street2><TaxExemptCC i:nil="true"/><ZipCode>20784</ZipCode></Address><Address><AddressId>001</AddressId><City>Jessup</City><CompanyName></CompanyName><Country>US</Country><DayPhone>3014443333</DayPhone><Email>rmc@xxxxxxxxxxxxx</Email><FirstName>Ima</FirstName><IsBillTo>0</IsBillTo><IsDelete>0</IsDelete><LastName>Nedrep</LastName><MiddleInitial/><State>MD</State><Street1>444 Jessup Drive</Street1><Street2></Street2><TaxExemptCC i:nil="true"/>
<ZipCode>20701</ZipCode></Address></Addresses><EdRepEmail i:nil="true"/><IsDelete>0</IsDelete><IsTaxExempt>0</IsTaxExempt><TaxExemptNumber i:nil="true"/></CommercialAccount>
-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------