[NEWSboard IBMi Forum]

Thema: XML-Parser

Hybrid View

  1. #1
    Registriert seit
    Jul 2002
    Beiträge
    218
    Vielen dank für die Antworten.

    @andreasPr
    a) / beim abtippen vergessen
    b stehen am anfang (ebenfalls vergessen)
    **** Demenz light ***

    @Rainer Ross
    werde ich berücksichtigen.

    @Fuerchau
    werde ich mal umstellen.


    Danke Euch für Eure Tipps.
    Hans-Joachim

  2. #2
    Registriert seit
    Aug 2014
    Beiträge
    179
    Hallo Hans-Joachim,

    ich habe etwas rumprobiert und eine Lösung gefunden, die funktioniert. Bei den Optionen habe ich noch countprefix=cnt_ datasubf=data eingefügt.

    Die Debug-Daten
    PHP-Code:
    DATA.TEILE_NR.FIELDNAME 'NFT_IDNR  '                                    
    DATA.TEILE_NR.DATA '20411               '                              
    DATA.HGNA.KEYGROUP.GROUPNAME 'Blechschraube                           '
    DATA.HGNA.KEYGROUP.CNT_KEYCHARACTERISTIC 6                              
    DATA
    .HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1) = 'ugna      '              
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(1) = 'Blechschraube       '    
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(2) = 'ugna_056  '              
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(2) = '4,8                 '    
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(3) = 'ugna_107  '              
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(3) = '38                  '    
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(4) = 'ugna_401  '              
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(4) = 'DIN EN ISO 7049     '    
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(5) = 'ugna_208  '
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(5) = 'C                   '  
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(6) = 'ugna_150  '            
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(6) = 'verzinkt            '  
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(7) = '          '            
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(7) = '                    '  
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(8) = '          '            
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(8) = '                    '  
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(9) = '          '            
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(9) = '                    '  
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(10) = '          '            
    DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(10) = '                    '  
    DATA.ERSTELLER.FIELDNAME 'NFT_KON   '                                
    DATA.ERSTELLER.DATA 'BizTalkImport       '                            
    DATA.ERSTELLDATUM.FIELDNAME 'NFT_DAT   '
    DATA.ERSTELLDATUM.DATA '2018-05-24T16:07:12 '            
    DATA.WORKFLOW_STATUS.FIELDNAME 'NFT_ZUST  '              
    DATA.WORKFLOW_STATUS.DATA '20000               '          
    DATA.AENDERUNGSDATUM.FIELDNAME 'NFT_MDAT  '              
    DATA.AENDERUNGSDATUM.DATA '0001-01-01T01:00:00 ' 
    Die korrigierte und modifizierte XML-Datei, statt Workflow-Status -> Workflow_Status
    HTML-Code:
     <?xml version="1.0" encoding="utf-8"?>                                             
    <DATA>                                                                           
        <Teile_Nr  FIELDNAME="NFT_IDNR">20411</Teile_Nr>                                
        <hgna FIELDNAME="NFT_NAM1">Schraube                                         
            <KEYGROUP GROUPNAME="Blechschraube">                                        
                <KEYCHARACTERISTIC NAME="ugna">Blechschraube</KEYCHARACTERISTIC>           
                <KEYCHARACTERISTIC NAME="ugna_056">4,8</KEYCHARACTERISTIC>                 
                <KEYCHARACTERISTIC NAME="ugna_107">38</KEYCHARACTERISTIC>                   
                <KEYCHARACTERISTIC NAME="ugna_401">DIN EN ISO 7049</KEYCHARACTERISTIC>      
                <KEYCHARACTERISTIC NAME="ugna_208">C</KEYCHARACTERISTIC>                    
                <KEYCHARACTERISTIC NAME="ugna_150">verzinkt</KEYCHARACTERISTIC>             
            </KEYGROUP>                                                                   
        </hgna>                                                                       
        <Ersteller FIELDNAME="NFT_KON">BizTalkImport</Ersteller>                        
        <Erstelldatum FIELDNAME="NFT_DAT">2018-05-24T16:07:12</Erstelldatum>            
        <Workflow_Status FIELDNAME="NFT_ZUST">20000</Workflow_Status>                   
        <Aenderungsdatum FIELDNAME="NFT_MDAT">0001-01-01T01:00:00</Aenderungsdatum> 
        <Aenderer FIELDNAME="NFT_MKON"></Aenderer>                   
        <meeh FIELDNAME="NFT_STK2">01</meeh>                         
        <diart FIELDNAME="NFT_STK3">K</diart>                        
        <bez1 FIELDNAME="NFT_STL0">Blechschraube</bez1>             
        <bez2 FIELDNAME="NFT_STL1">Linsen mit Kreuzschlitz</bez2>   
        <bez3 FIELDNAME="NFT_STL2"></bez3>                          
        <herna FIELDNAME="NFT_STL3"></herna>                        
        <hernr FIELDNAME="NFT_STL4"></hernr>                        
        <cnnr FIELDNAME="NFT_STL5"></cnnr>                          
        <ulfilenr FIELDNAME="NFT_STL6"></ulfilenr>                  
        <csanr FIELDNAME="NFT_STL7"></csanr>                        
        <arstk_ FIELDNAME="NFT_STL8">DIN EN ISO 7049</arstk_>       
        <arart_ FIELDNAME="NFT_STL9">2002523</arart_>               
        <herty FIELDNAME="NFT_STH0"></herty>                        
        <csanorm FIELDNAME="NFT_STH1"></csanorm>                    
        <Bemerkung FIELDNAME="ML_STRING"></Bemerkung>               
        <Spezifikation FIELDNAME="ML_STRING"></Spezifikation>
    </DATA>
    Das RPG-Programm
    PHP-Code:
             ctl-opt dftactgrp(*no);
          
    //------------------------------------------------------------------//
          //                                                                  //
          //  Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN           //
          //                                                                  //
          //-----------------                                                 //
          // R.Ross 12.2018 *                                                 //
          //------------------------------------------------------------------//
          // XML-Array - Root                                                 //
          //------------------------------------------------------------------//

             
    dcl-ds  Data                  qualified;
              
    dcl-ds  Teile_Nr;
                       
    Fieldname           char(10);
                       
    Data                char(20);
              
    end-ds;
                      
    hgna                 likeds(hgna);
              
    dcl-ds  Ersteller;
                       
    Fieldname           char(10);
                       
    Data                char(20);
              
    end-ds;
              
    dcl-ds  Erstelldatum;
                       
    Fieldname           char(10);
                       
    Data                char(20);
              
    end-ds;
              
    dcl-ds  Workflow_Status;
                       
    Fieldname           char(10);
                       
    Data                char(20);
              
    end-ds;
              
    dcl-ds  Aenderungsdatum;
                       
    Fieldname           char(10);
                       
    Data                char(20);
              
    end-ds;
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Element hgna                                                     //
          //------------------------------------------------------------------//

             
    dcl-ds  hgna                  qualified;
                      
    Keygroup             likeds(Keygroup);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Element Keygroup                                                 //
          //------------------------------------------------------------------//

             
    dcl-ds  Keygroup              qualified;
                      
    Groupname            char(40);
                      
    cnt_Keycharacteristic uns(10);
                      
    Keycharacteristic    likeds(Keycharacteristic)dim(10);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Element Keycharacteristic                                        //
          //------------------------------------------------------------------//

             
    dcl-ds  Keycharacteristic     qualified;
                      
    Name                 char(10);
                      
    Data                 char(20);
             
    end-ds;

          
    //------------------------------------------------------------------//
          // Processing                                                       //
          //------------------------------------------------------------------//

               
    main();

               *
    inlr = *on;
          
    //------------------------------------------------------------------//
          // Main                                                             //
          //------------------------------------------------------------------//
             
    dcl-proc Main;

             
    dcl-s   LocOpt      varchar(256);            // XML-Options
             
    dcl-s   LocFile     varchar(128);            // File

               
    LocFile '/Home/Import/xml/test01.xml';   // File

               
    LocOpt  'doc=file case=any allowextra=yes +
                          countprefix=cnt_ datasubf=data'
    ;

               
    xml-into Data %xml(LocFile:LocOpt);

             
    end-proc;
          
    //------------------------------------------------------------------// 
    Herzliche Grüße
    Rainer

  3. #3
    Registriert seit
    Aug 2014
    Beiträge
    179
    Das RPG-Programm läßt sich noch weiter vereinfachen
    Code:
             ctl-opt dftactgrp(*no);                                                                                        
          //------------------------------------------------------------------//                                            
          //                                                                  //                                            
          //  Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN           //                                            
          //                                                                  //                                            
          //-----------------                                                 //                                            
          // R.Ross 12.2018 *                                                 //                                            
          //------------------------------------------------------------------//                                            
          // XML-Array - Root                                                 //                                            
          //------------------------------------------------------------------//                                            
                                                                                                                            
             dcl-ds  Data                  qualified;                                                                       
                      Teile_Nr             likeds(Data_tmp);                                                                
                      hgna                 likeds(hgna);                                                                    
                      Ersteller            likeds(Data_tmp);                                                                
                      Erstelldatum         likeds(Data_tmp);                                                                
                      Workflow_Status      likeds(Data_tmp);                                                                
                      Aenderungsdatum      likeds(Data_tmp);                                                                
             end-ds;                                                                                                        
                                                                                                                            
          //------------------------------------------------------------------//                                            
          // Template Data                                                    //                                            
          //------------------------------------------------------------------//                                            
                                                                                                                            
             dcl-ds  Data_tmp              template qualified;                                                              
                      Fieldname            char(10);                                                                        
                      Data                 char(20);                                                                        
             end-ds;                                                                                                        
                                                                                                                            
          //------------------------------------------------------------------//                                            
          // Element hgna                                                     //                                            
          //------------------------------------------------------------------//                                            
                                                                                                                            
             dcl-ds  hgna                  qualified;                                                                       
                      Keygroup             likeds(Keygroup);                                                                
             end-ds;                                                                                                        
                                                                                                                            
          //------------------------------------------------------------------//                                            
          // Element Keygroup                                                 //                                            
          //------------------------------------------------------------------//                                            
                                                                                                                            
             dcl-ds  Keygroup              qualified;                                                                       
                      Groupname            char(40);                                                                        
                      cnt_Keycharacteristic uns(10);                                                                        
                      Keycharacteristic    likeds(Keycharacteristic)dim(10);                                                
             end-ds;                                                                                                        
                                                                                                                            
          //------------------------------------------------------------------//                                            
          // Element Keycharacteristic                                        //                                            
          //------------------------------------------------------------------//                                            
                                                                                                                            
             dcl-ds  Keycharacteristic     qualified;                                                                       
                      Name                 char(10);                                                                        
                      Data                 char(20);                                                                        
             end-ds;                                                                                                        
                                                                                                                            
          //------------------------------------------------------------------//                                            
          // Processing                                                       //                                            
          //------------------------------------------------------------------//                                            
                                                                                                                            
               main();                                                                                                      
                                                                                                                            
               *inlr = *on;                                                                                                 
          //------------------------------------------------------------------//                                            
          // Main                                                             //                                            
          //------------------------------------------------------------------//                                            
             dcl-proc Main;                                                                                                 
                                                                                                                            
             dcl-s   LocOpt      varchar(256);            // XML-Options                                                    
             dcl-s   LocFile     varchar(128);            // File                                                           
                                                                                                                            
               LocFile = '/Home/Import/xml/test01.xml';   // File                                                           
                                                                                                                            
               LocOpt  = 'doc=file case=any allowextra=yes +                                                                
                          countprefix=cnt_ datasubf=data';                                                                  
                                                                                                                            
               xml-into Data %xml(LocFile:LocOpt);                                                                          
                                                                                                                            
             end-proc;                                                                                                      
          //------------------------------------------------------------------//

  4. #4
    Registriert seit
    Jul 2002
    Beiträge
    218
    ich glaube ich habe ihn gefunden... sch….. ab data(3) wird das Feld nicht richtig geschlossen
    Werde ich heute Abend ausprobieren.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.250
    Da kann man mal wieder sehen, wofür das Joblog so gut ist;-).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •