[NEWSboard IBMi Forum]

Thema: XML-Einlesen

  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    XML-Einlesen

    Hallo,

    habe zum ersten mal XML eingelesen.
    Ich habe mir eine Datenstruktur erstellt die dann wie folgt im Programm abarbeite/einlese:
    Code:
    options = 'doc=file +                               
              path=Message +                           
              case=any +                               
              allowextra=yes +                         
              allowmissing=yes +                       
              ns=remove';                              
    // Convert XML into variable                           
    Xml-into Message %Xml(XmlFile: options);            
    Ich habe aber bei folgendem XML 2 Probleme
    1. „Body“ kommt sowohl als Element als auch Element
    2. Wie kann ich das Feld „CurCodeISO4217-A3“ in meiner Datenstrukutr abbilden?
    In der Datenstruktur wird ja der Bindestrich nicht unterstützt.


    Dank im Voraus

    Tarki
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Click image for larger version. 

Name:	2014-04-12 09 32 12 PicPick.png 
Views:	160 
Size:	63,0 KB 
ID:	255  


  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Wenn Du auf Release 7.1 bist sollte das kein Problem sein. Da Du jedoch schon die Option ns verwendest, bist Du auf dem letzten (XML-INTO) Stand
    1. Das Mehrfach-Vorkommen des gleichen Element-Namens in unterschiedlichen Stufen sollte kein Problem darstellen, da die Ausgabe-Datenstrukturen qualifiziert angelegt werden bzw. Unterstrukturen mit LIKEDS definiert werden.
    2. Anstatt case=any solltest Du case=convert verwenden. Bei case convert, werden zunächst alle Buchstaben mit Hilfe der Language-Tabellen (*LANGIDSHR) in Großbuchstaben konvertiert, also z.B. ü in U. Die übrigen Zeichen, die nicht in Großbuchstaben konvertiert werden können, werden durch einen Unterstrich (_) ersetzt, d.h. CurCodeISO4217-A3 wird in CURCODEISO4217_A3 konvertiert. Folgen mehrere Unterstriche aufeinander, werden diese durch einen einzigen Unterstrich ersetzt.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke Frau Hauser für die rasche Antwort.
    Auf dem System, wo ich das umsetzte ist Releasestand 6.1.
    Ich hätte eigentlich Unterstrukturen verwendet aber das hatte leider nichts geholfen.
    Einmal ist Body ein Segment und einmal ein Element. Liegt da vielleicht das Problem?

    Danke

    Tarki
    Code:
    D* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *  
    D* XML Data Container                                                                 
    D* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *  
    D Message         DS                  Qualified                                       
    D  Body                               LikeDS(Body_t)                       Segment    
    D*                                                                                    
    D Body_t          DS                  Qualified                                       
    D  Record                             LikeDS(Record_t)                     Segment    
    D                                     Dim(5)                                          
    D*                                                                                    
    D Record_t        DS                  Qualified                                       
    D  CertifiedModelCode...                                                              
    D                                     LikeDS(CertifiedModelCode_t)                    
    D CertifiedModelCode_t...                                                             
    D                 DS                  Qualified                                       
    D SalesModel                    14A                                                   
    D*Body                           1A                                                   
    D Engine                        12A

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Wo liegt das Problem?
    Ein Kompilierungsfehler, wenn ja welcher!

    Doppelte Unterfeldnamen sind seit Einhführung der qualifizierten Datenstrukturen (Release V5R2!) kein Problem.
    Ich denke, dass der Namensbereich oder der Bindestrich das Problem verursachen. Die Schlüssel-Worte ns und case=convert wurden erst nach Release 6.1 via PTF eingeführt. Vielleicht fehlen auf der 6.1 Maschine die entsprechenden PTFs.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Apr 2012
    Beiträge
    360
    Ich habe mir leider vorher nicht notiert was genau der Kompelierungsfehlernummer war.Aber es war das Feld Body markiert.
    Ich habe wie vorgeschlagen case=convert hinzugefügt.
    Jetzt lässt es sich fehlerfrei umwandeln.

    Danke

Similar Threads

  1. Einlesen Dateien vom IFS/root
    By elmar in forum NEWSboard Server Software
    Antworten: 1
    Letzter Beitrag: 19-05-03, 09:12

Berechtigungen

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