[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hast Du mal versucht bei der %Handler() Funktion die CCSID anzugeben?

    Beispiel: Hier werden die Daten als UCS2 ausgegeben.
    Code:
    XML-SAX %handler(hdlr:comm) %XML(xmldata : 'ccsid=ucs2');
    Birgitta
    Birgitta Hauser

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

  2. #2
    Registriert seit
    Sep 2005
    Beiträge
    79
    Click image for larger version. 

Name:	XML.png 
Views:	7 
Size:	16,3 KB 
ID:	594

    Die auskommentierte Anweisung hatte ich zuvor.

    Im Übrigen hab ich aus dem Text mit dem WIN10-Editor alle Umlaute und Zeilenumbrüche entfernt. Letztes und erstes reguläres Zeichen gelöscht und neu geschrieben. Den Umlaut gegen ue ersetzt.
    Trotzdem wird der Text abgeschnitten: FC-Ausruestung alte Chemie 80 % (komplette Partie) 32 Stueck

    Vielleicht gibt es ein Beispiel um das ganze mit SQL einzulesen. Bin hier leider vor einiger Zeit nicht fündig geworden.
    Besten Dank an alle. Für heute reichts erstmal ...

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    ... oder Du schaust dir mal den XML-INTO an. Mit V3R1 oder so ginge dies natürlich nicht.
    kf

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Suche mal hier im Forum nach XML-INTO.
    Da gibt es einige Beispiele (for allem Free) mit geschachtelten qualified DS und einer einzigen Anweisung.
    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

  5. #5
    Registriert seit
    Sep 2005
    Beiträge
    79
    Vielen Dank nochmal an alle Koryphäen. Abschließend muss ich sagen, dass ich mich von XML in RPG abgewendet habe. Der Versuch in C# war auf Anhieb von Erfolg gekrönt. Die Umlaute werden korrekt dargestellt. Nichts wird abgeschnitten. Selbst die Zeilenumbrüche sind vorhanden.
    Der Code ist übersichtlich und leicht verständlich. Hier sollte sich IBM was abschauen.

    Danke für die Hilfsbereitschaft.
    using System;using System.Xml;

    namespace ReadXMLfromFile
    {
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
    static void Main(string args)
    {
    XmlTextReader reader = new XmlTextReader ("books.xml");
    while (reader.Read())
    {
    switch (reader.NodeType)
    {
    case XmlNodeType.Element: // The node is an element.
    Console.Write("<" + reader.Name);
    Console.WriteLine(">");
    break;
    case XmlNodeType.Text: //Display the text in each element.
    Console.WriteLine (reader.Value);
    break;
    case XmlNodeType.EndElement: //Display the end of the element.
    Console.Write("</" + reader.Name);
    Console.WriteLine(">");
    break;
    }
    }
    Console.ReadLine();
    }
    }
    }

  6. #6
    Registriert seit
    Nov 2020
    Beiträge
    418
    Für XML Verarbeitung verwende ich persönlich entweder SQL oder Python (oder auch PHP) auf der IBM i.
    Läuft native und ist auch mit ein paar Zeilen Code zu implementieren. Und Unicode Probleme gibt's da auch weniger.

    lg Andreas

  7. #7
    Registriert seit
    Sep 2005
    Beiträge
    79
    SQL interessiert mich brennend. Gibt es evtl. ein übersichtliches Beispiel auf eine Datei im IFS?

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Hier gibts Doku und Beispiele:
    https://www.ibm.com/support/knowledg...aspkickoff.htm

    Klar ist jede Sprache die XML native kann besser als ILERPG.
    Aber auf der IBM i kannst du ebenso Java oder Node.js verwenden.
    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

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hier ist ein ganz einfaches Beispiel, bei dem auf eine IFS-Datei zugegriffen wird.

    Code:
      Select a.*
      from XMLTABLE('Staff/Department/Employee' 
            passing xmlparse(Document Get_xml_file('/home/Hauser/EmplXML.xml'))
                    Columns  EmployeeNo Integer      Path '@Id',
                             FirstName  VarChar(30)  Path 'Name/FirstName',
                             LastName   VarChar(30)  Path 'Name/LastName',
                             Title      VarChar(30)  
                                        Default ''   Path 'Name/LastName/@Title',
                             Salary     Dec(11, 2)   
                                        Default 0    Path 'Privacy/Salary',
                             Currency   VarChar(30)
                                        Default ''   Path 'Privacy/Salary/@Currency') a;
    Für die Details solltest Du Dir allerdings das White Paper anschauen, das Baldur angegeben hat.
    Birgitta Hauser

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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Achja, was die CCSID 1208 angeht, so muss die IFS-Datei dieses Attribut bereits vorher haben (CHGATR).
    SQL und XML-INTO interessieren sich leider nicht für die Processing Instruction: encoding="xxx".
    Dafür müsste man die IFS-Datei nämlich nach der Encoding-Erkenntnis noch mal neu einlesen.
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    ... ach ja, wenn man die xml-Datei direkt mit RPG erzeugt (SQLTYPE(XML_CLOB_FILE)) wird die Datei automatisch in UTF-8 generiert (zumindest sofern man den Default in der Abfrage-Options-Datei QAQQINI nicht geändert hat). Die Konvertierung und Ausgabe in UTF-8 erfolgt automatisch!
    ... und wenn die IFS-Datei UTF-8 ist, kann SQL die Daten auch problemlos nach EBCDIC konvertieren.

    Birgitta
    Birgitta Hauser

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

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Hm, ich gebe die CCSID in der definierten Variable an, also CCSID.
    Wenn die IFS-Datei vor der Ausgabe bereits mit einer falschen CCSID vorhanden ist, wird leider diese CCSID verwendet. Also auch hier, zur Sicherheit immer vorher löschen. Man weiß ja nie, ob da nicht einer mit CHGATR rumgespielt hat.

    Hier gibts ein paar nähere Erläuterungen:
    https://www.ibm.com/support/knowledg...aspxml1516.htm
    Per CLOB_FILE wird immer die File-CCSID genommen.

    Wofür da noch die QAQQINI verwendet wird erschließt sich mir nicht, da ich die Variablen doch mit einer CCSID definieren kann bzw. Defaults via Header-Options eingestellt werden.
    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

Similar Threads

  1. CL Text-Datei erstellen/modifizieren
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 12-05-16, 16:41
  2. Bildschirmanzeige als Text speichern
    By petzi-mg in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 06-11-14, 07:51
  3. COLHDG und TEXT ändern
    By AK1 in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 07-04-14, 06:38
  4. Daten werden vom ODBC abgeschnitten
    By synus in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 08-04-03, 13:12
  5. Intelligent Text Prozessing
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 12-10-01, 07:07

Berechtigungen

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