Hallo Forum,

ich mache gerade meine ersten "geh versuche" mit XML.
Über die ersten Fehler (CCSID) bin ich schon gestolpert, habe das aber schon übers Forum gelöst bekommen.

Zugrunde liegt ein XML-Dokument mit mehreren Elementen.
PHP-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> 
</PART></OBJECTS></PDMRequest>

Zuerst habe ich das XML Dokument zerlegt, also nur DATA mit den einzelnen Feldbeschreibungen
-DATA-
…. Felder ….
-/DATA.

hat auch funktioniert.
Anschliessend habe ich hgna eingefügt,
doch jetzt bin ich mit meinem XML-Wissen am Ende und habe auch keine Idee wie ich das beim
RPG darstellen soll.
PHP-Code:
 Nachricht . . . :   Das XML-Dokument entspricht nicht der RPG-Variablen;      
   
Ursachencode 5.                                                             
 Ursache  
. . . . : Beim Parsing eines XML-Dokuments hat der Parser            
   festgestellt
dass das XML-Dokument nicht der RPG-Variablen "PARM"          
   
entspricht und die Optionen dies nicht zulassenDer Ursachencode ist 5. Das
   Unterfeld
für das der Fehler festgestellt wurdeist "PARM(1).hgna.value"
   Die 
Optionen sind "doc=File datasubf=value path=DATA      allowmissing=yes  
   allowextra=yes case=convert"
Der Name des XML-Dokuments ist 
Programm:
PHP-Code:
d*-------------                                    
d tmplteilenr     ds                  qualified    
d                                           template     
d  FIELDNAME                    15a                
d  value                            30a                
                                                   
                                                   
d tmplkeychar     ds                  template     
d                                              qualified    
d Name                            15a    
d value                            30a                                 
d
*-------------                                                     
d tmplkeygroup    ds                  template                      
d                                              qualified                     
d  GROUPNAME                    15a                                 
d  value                               30a                                 
d KEYCHARACTERIS
...                                                 
D TIC                                 Dim(6)  likeds(tmplkeychar)   
                                                                    
d*-------------                                                     
d tmplhgnaField   ds                  qualified                     
d                                             template                      
d  FIELDNAME                    15a                                 
d  value                             30a                                 
                                                                    
d
*-------------                                                     
d tmplhgna        ds                  qualified                     
d                                           template                      
d  FIELDNAME                    15a    
d  value                        30a                                     
d  GROUPNAME                    15a                                     
d  value1                       30a                                     
d  keygroup                           Likeds
(tmplkeygroup)              
                                                                         
d*-------------                                                         
d tmplersteller   ds                  qualified                         
d                                           template                          
d  FIELDNAME                    15a                                     
d  value                             30a                                     
                                                                         
d
*-------------                                                         
d tmplerstelldat  ds                  qualified                         
d                                           template                          
d  FIELDNAME                    15a                                     
d  value                             30a                                     
d
*-------------                                       
d tmplWorkflowSt  ds                  qualified       
d                                     template        
d  FIELDNAME                    15a                   
d  value                        30a                   
                                                      
d
*-------------                                       
d tmplAenderungD  ds                  qualified       
d                                     template        
d  FIELDNAME                    15a                   
d  value                        30a                   
                                                      
d
*-------------                                       
d tmplAenderer    ds                  qualified       
d                                     template        
d  FIELDNAME                    15a                   
d  value                        30a                   
                                                      
d
*-------------
d tmplWorkflowSt  ds                  qualified     
d                                     template      
d  FIELDNAME                    15a                 
d  value                        30a                 
                                                    
d
*-------------                                     
d tmplAenderungD  ds                  qualified     
d                                     template      
d  FIELDNAME                    15a                 
d  value                        30a                 
                                                    
d
*-------------                                     
d tmplAenderer    ds                  qualified     
d                                     template      
d  FIELDNAME                    15a                 
d  value                        30a                 
                                                    
d
*-------------                                     
d tmplmeeh        ds                  qualified     
d                                     template      
d  FIELDNAME                    15a                 
d  value                         2a                 
                                                    
d
*-------------                                     
d tmpldiart       ds                  qualified     
d                                     template      
d  FIELDNAME                    15a                 
d  value                         1a                 
                                                    
d
*-------------                                     
d tmplbez1        ds                  qualified     
d                                     template      
d  FIELDNAME                    15a                 
d  value                        30a                 
                                                    
d
*-------------                                      
d tmplbez2        ds                  qualified      
d                                     template       
d  FIELDNAME                    15a                  
d  value                        30a                  
                                                     
d
*-------------                                      
d tmplbez3        ds                  qualified      
d                                     template       
d  FIELDNAME                    15a                  
d  value                        30a                  
                                                     
d
*-------------                                      
d tmplherna       ds                  qualified      
d                                     template       
d  FIELDNAME                    15a                  
d  value                        30a                  
                                                     
d
*-------------
d tmplhernr       ds                  qualified   
d                                     template    
d  FIELDNAME                    15a               
d  value                        30a               
                                                  
d
*-------------                                   
d tmplcnnr        ds                  qualified   
d                                     template    
d  FIELDNAME                    15a               
d  value                        30a               
                                                  
d
*-------------                                   
d tmplufilenr     ds                  qualified   
d                                     template    
d  FIELDNAME                    15a               
d  value                        30a               
                                                  
d
*-------------                                   
 
d tmplcsanr       ds                  qualified 
d                                     template  
d  FIELDNAME                    15a             
d  value                        30a             
                                                
d
*-------------                                 
d tmplarstk_      ds                  qualified 
d                                     template  
d  FIELDNAME                    15a             
d  value                        30a             
                                                
d
*-------------                                 
d tmplarart_      ds                  qualified 
d                                     template  
d  FIELDNAME                    15a             
d  value                        30a             
                                                
d
*-------------                                 
d tmplherty       ds                  qualified   
d                                     template    
d  FIELDNAME                    15a               
d  value                        30a               
                                                  
d
*-------------                                   
d tmplcsanorm     ds                  qualified   
d                                     template    
d  FIELDNAME                    15a               
d  value                        30a               
                                                  
d
*-------------                                   
d tmplBemerkung   ds                  qualified   
d                                     template    
d  FIELDNAME                    15a               
d  value                        30a               
                                                  
d
*-------------
d tmplSpezifikat  ds                  qualified       
d                                     template        
d  FIELDNAME                    15a                   
d  value                        30a                   
                                                      
d
*=============                                                                                                     d tmpldata        ds                  qualified               
d                                     template                
d  Teile_Nr                           likeds
(tmplteilenr)     
d  hgna                               likeds(tmplhgna)        
d  Ersteller                          likeds(tmplersteller)   
d  Erstelldatum                       likeds(tmplerstelldat)  
d  Workflow_Stat...                                           
d  us                                 likeds(tmplWorkflowSt)  
d  Aenderungsdat...                                           
d  um                                 likeds(tmplAenderungD)  
d  Aenderer                           likeds(tmplAenderer)    
d  meeh                               likeds(tmplmeeh)        
d  diart                              likeds(tmpldiart)       
d  bez1                               likeds(tmplbez1)        
d  bez2                               likeds(tmplbez2)        
d  bez3                               likeds(tmplbez3)        
d  herna                              likeds(tmplherna)       
d  hernr                              likeds(tmplhernr)       
d  cnnr                               likeds(tmplcnnr)
d  ulfilenr                           likeds(tmplufilenr)                  
d  csanr                              likeds(tmplcsanr)                    
d  arstk_                             likeds(tmplarstk_)                   
d  arart_                             likeds(tmplarart_)                   
d  herty                              likeds(tmplherty)                    
d  csanorm                            likeds(tmplcsanorm)                  
d  Bemerkung                          likeds(tmplbemerkung)                
d  Spezifikation                      likeds(tmplspezifikat)               
                                                                           
d xmlpfad         s            255a   varying                              
    
d doc             s            100a   varying                              
d                                     inz
('doc=File datasubf=value ')      
d allowmissing    s             20a   varying                              
d                                     inz
('allowmissing=yes ')             
d allowextra      s             20a   varying                              
d                                     inz
('allowextra=yes ')               
case            s             20a   varying         
d                                     inz
('case=convert')    
                                                             
d path            s            255a   varying                
d                                     inz
('path=DATA      '
                                                             
d status          s               n    
 
     
Eval  xmlpfad=%Trim(attchpath)+%Trim(FileName)  ;  
                                                       
                                                       
  
xml-into  %handler(Xmldomhandler status)           
                %
xml(xmlpfad :                         
                             
doc +                     
                             
path +                    
                             
allowmissing +            
                             
allowextra +              
                             case);                    
                                                       
 eval *
inlr=*On ;                                      
 
p Xmldomhandler   b                                         
                                                            
d                 pi            10i 0                       
d redcode                         n                         
d DATA                                likeds
(tmpldata)      
d                                     dim(1)                
d                                     const                 
d nbrrec                        10i 0 value                 
d x               s             10i 0 inz 
im Debug sieht es dann so aus:

PHP-Code:
EVAL DATA                                                          
DATA
.TEILE_NR.FIELDNAME(1) = '**********     '                     
DATA.TEILE_NR.VALUE(1) = '**********                    '          
DATA.HGNA.FIELDNAME(1) = '**********     '                         
DATA.HGNA.VALUE(1) = '**********                    '              
DATA.HGNA.GROUPNAME(1) = '**********     '                         
DATA.HGNA.VALUE1(1) = '**********                    '             
DATA.HGNA.KEYGROUP.GROUPNAME(1) = '**********     '                
DATA.HGNA.KEYGROUP.VALUE(1) = '**********                    '     
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1,1) = '**********     ' 
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.VALUE(1,1) =                  
         
'**********                    '                          
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1,2) = '**********     ' 
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.VALUE(1,2) = 
Vielleicht kann mir hier einer auf die Sprünge helfen.

Vielen Dank
Hans-Joachim