[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Thema: XML-Parser

Hybrid View

  1. #1
    Registriert seit
    Aug 2014
    Beiträge
    181
    Poste bitte das Programm, dann kann ich es nachvollziehen

  2. #2
    Registriert seit
    Aug 2014
    Beiträge
    181
    Dann habe ich noch eine Frage, wenn jetzt in einem Zeile kommt:
    PHP-Code:
    <Artikel-Nr. FIELDNAME="NFT_ART_NUM">80030045
    Die Empfehlung für gutes XML ist Bindestrich und Punkt zu vermeiden

    XML Naming Rules

    XML elements must follow these naming rules:

    • Element names are case-sensitive
    • Element names must start with a letter or underscore
    • Element names cannot start with the letters xml (or XML, or Xml, etc)
    • Element names can contain letters, digits, hyphens, underscores, and periods
    • Element names cannot contain spaces

    Any name can be used, no words are reserved (except xml).


    Best Naming Practices

    HTML-Code:
    Create descriptive names, like this:  <person>, <firstname>, <lastname>.
     Create short and simple names, like this: <book_title> not like this:  <the_title_of_the_book>.
     Avoid "-". If you name something "first-name", some software may  think you want to subtract "name" from "first".
     Avoid ".". If you name something "first.name", some software may  think that "name" is a property of the object "first".
     Avoid ":". Colons are reserved for   namespaces (more later).
     Non-English letters like éòá are perfectly legal in XML, but watch out for  problems if your software doesn't support them.
    

    Quelle: https://www.w3schools.com/xml/xml_elements.asp



  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.791
    Insofern schon besser, sich daran zu halten. Für Sprachen wie Java/.Net/o.ä. ist das letztlich aber egal.
    Für ILERPG werden ungültige Namen ja sowieso (case=convert) in "_" übersetzt.
    Die XML-Schreibweise für Namen ist i.d.R. "CamelCase", also den Höckern des Kamels nachempfunden.
    Großbuchstaben am Anfang eines Wortes, der Rest dann klein, z.b. "ArtikelNummer".
    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

  4. #4
    Registriert seit
    Jul 2002
    Beiträge
    218
    @fuerchau

    Leider wird mir die XML-Datei von der Java- o.ä. -Fraktion zur Verfügung gestellt.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.791
    Macht ja nichts, da du sie ja verarbeiten kannst. Namen bis 128 Stellen (ist zwar mühsam, aber RDi hilft) sind ja möglich.
    Im sog. *SNGSTG-Modell sind Datenstrukturen bis max. 16 MB möglich (bei UCS2 eben nur 8MB).
    Du kannst aber beim CRTxxxMOD/PGM auf das *TERASPACE-Modell umstellen. Dann sind DS'n bis 2 Terabyte machbar, wenn das System mitmacht;-).
    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

  6. #6
    Registriert seit
    Jul 2002
    Beiträge
    218
    @rainer

    hier die quelle.
    [
    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);
    Aenderer likeds(Data_tmp);
    meeh likeds(Data_tmp);
    diart likeds(Data_tmp);
    bez1 likeds(Data_tmp);
    bez2 likeds(Data_tmp);
    bez3 likeds(Data_tmp);
    herna likeds(Data_tmp);
    hernr likeds(Data_tmp);
    cnnr likeds(Data_tmp);
    ulfilenr likeds(Data_tmp);
    csanr likeds(Data_tmp);
    arstk_ likeds(Data_tmp);
    arart_ likeds(Data_tmp);
    herty likeds(Data_tmp);
    csanorm likeds(Data_tmp);
    Bemerkung likeds(Data_tmp);
    Spezifikation likeds(Data_tmp);
    end-ds;

    //------------------------------------------------------------------//
    // Template Data //
    //------------------------------------------------------------------//

    dcl-ds Data_tmp template qualified;
    Fieldname char(10);
    Data char(20);
    end-ds;

    //------------------------------------------------------------------//
    // Template Datum //
    //------------------------------------------------------------------//

    dcl-ds Datu_tmp template qualified;
    Fieldname char(10);
    Data char(40);
    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();

    chain P4FILN ArtstaL05;
    Eval p4andat=%TimeStamp ;

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

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

    LocFile = '/home/NOWAK/VORW/Part_w_SML_Export_PF_8_AS400.xml'; //FILE


    LocOpt = 'doc=file case=any allowextra=yes +
    countprefix=cnt_ datasubf=data';
    monitor ;
    xml-into(E) Data %xml(LocFile:LocOpt);
    On-error 353 ;
    Endmon ;


    end-proc;
    //------------------------------------------------------------------// PHP]

    [/PHP]

    und die XML-Datei:
    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>                  
             <KEYCHARACTERISTIC NAME="ugna_999">BlauGrau</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>
    Leider arbeite ich noch Spaltenorientiert,
    wo müsste ich denn den *entry , chain und update einsetzen?

    LG
    Hans-Joachim

  7. #7
    Registriert seit
    Jul 2002
    Beiträge
    218
    CCSID = 1208, hatte ich als erstes geprüft.
    Feldlängen habe ich erhöht, und als varchar definiert.


    das Joblog bringt Ursachencode 5 - nur das verstehe ich nicht !!
    PHP-Code:
       Ursachencode 5.                                                             
     Ursache  
    . . . . : Beim Parsing eines XML-Dokuments hat der Parser            
       festgestellt
    dass das XML-Dokument nicht der RPG-Variablen "pdmrequest"    
       
    entspricht und die Optionen dies nicht zulassenDer Ursachencode ist 5. Das
       Unterfeld
    für das der Fehler festgestellt wurdeist                       
       
    "pdmrequest.objects.part.data.hgna.keygroup.keycharacteristic(3).data". Die 
       
    Optionen sind "doc=File case=convert allowextra=yes allowmissing=yes        
       countprefix=Nu_  datasubf=data"
    Der Name des XML-Dokuments ist             
       
    /home/NOWAK/VORW/Part_w_SML_Export_PF_5_AS400.xml; *N gibt andass das 

Berechtigungen

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