[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte
  1. #1
    Registriert seit
    Nov 2009
    Beiträge
    208

    XML Beschreibung

    Hallo
    wir sollen demnächst CAMT-Kontoauszüge einlesen. (bisher MT940)
    Unsere Entwickler haben noch nie mit XML-Into gearbeitet.
    Gibt es irgendwo ein kleines HOW-To zu dem Thema.

    - Was muß (wie) definiert werden
    - Wie werden 'Pflicht'-Elemente gekennzeichnet bzw.
    - wie werden die Elemente gekennzeichnet die ggf nicht kommen.
    - Wie werden 'sich möglicherweise wiederholende' Elemente gekennzeichnet
    - Was geschied, wenn Elemente kommen die im PGM nicht definiert sind (Das ist da der
    wesentliche Vorteil von XML, das ich nur definieren brauch, was ich brauche-oder?)
    - Meldet XML-INTO Fehler oder müssen Elemente separat geprüft werden,
    ...
    Danke
    DiBe

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Versuch's mal hiermit:
    w3Schools - XML Tutorial

    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
    Nov 2009
    Beiträge
    208
    Danke, aber nein, das meine ich nicht.
    XML ist, in groben Zügen bekannt.

    Meine Fragen bezogen sich auf die Definitionen / Kennzeichungen, ...im RPGLE
    Woran erkennt der xml-lese Befehl, wie weit er einlesen muß, wie oft sich eine definition wiederholt, ...

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hallo,
    im ILE RPG Rref. Handbuch findest du eigentlich sehr viele Beispiele von der IBM dazu.

    Ihr solltet euch auch XML-SAX anschauen.
    Damit kannst du eine Handler-Prozedur definieren. Beim durchlesen des XMLs wird für jedes Element/Attribut/Wert/... dieser Handler aufgerufen und du kannst sehr dynamisch auf die Daten eines XML Files zugreifen ohne die Struktur vorher genau kennen zu müssen.
    Auch dafür gibt es einige Beispiele im Handbuch.

    lg Andreas

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von dibe Beitrag anzeigen
    Hallo
    wir sollen demnächst CAMT-Kontoauszüge einlesen. (bisher MT940)
    Unsere Entwickler haben noch nie mit XML-Into gearbeitet.
    Gibt es irgendwo ein kleines HOW-To zu dem Thema.

    - Was muß (wie) definiert werden
    - Wie werden 'Pflicht'-Elemente gekennzeichnet bzw.
    - wie werden die Elemente gekennzeichnet die ggf nicht kommen.
    - Wie werden 'sich möglicherweise wiederholende' Elemente gekennzeichnet
    - Was geschied, wenn Elemente kommen die im PGM nicht definiert sind (Das ist da der
    wesentliche Vorteil von XML, das ich nur definieren brauch, was ich brauche-oder?)
    - Meldet XML-INTO Fehler oder müssen Elemente separat geprüft werden,
    ...
    Danke
    DiBe
    ... normalerweise gibt es da eine formale Beschreibung des XML als DTD oder als Schema, die ein richtiger Parser (nicht dieser crippled RPG XML-INTO) dann auch prüfen könnte.

    D*B.

    der sowas mit einer ordentlichen Programmiersprache machen würde...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Oct 2013
    Beiträge
    171
    Das ist kein Wunder-Ding, ganz im Gegenteil.
    Es ist simpler, als Du denkst. Und scheitert öfter, als Du denkst.
    Wenn nicht alles 100%ig passt, bist Du, schon allein aus Fehler-Such-Gründen, möglicherweise mit XML-SAX besser bedient.

    Auf alle Fälle ist "XML-Wissen in groben Zügen" zu wenig.

    Wenn Du ins Krankenhaus gehst und Dir den Blinddarm rausnehmen lassen möchtest, wirst auch froh sein, wenn Du einen Chirurgen bekommst, dem Anatomie mehr als in groben Zügen bekannt ist.

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    905
    Hallo DiBe,

    Hier gibt's auch noch Info's über XML parsing von Scott Klement. Vielleicht hilft's. Auf jeden Fall findest Du am Ende noch einige weiterführende Links.

    Siehe hier:
    http://www.scottklement.com/presenta...ee%20Tools.pdf
    kf

  8. #8
    Registriert seit
    Nov 2009
    Beiträge
    208
    Danke für die Infos, ich werde mit unseren Entwicklern sprechen.
    @BenderD
    der sowas mit einer ordentlichen Programmiersprache machen würde...
    Das find ich nett von Ihnen. Unsere Entwicklungsabteilung würde das auch gerne. Aber es kann niemand was anderes als RPG. Und das soll ja auch gehen.
    Dietlinde Beck

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von dibe Beitrag anzeigen
    Danke für die Infos, ich werde mit unseren Entwicklern sprechen.

    Das find ich nett von Ihnen. Unsere Entwicklungsabteilung würde das auch gerne. Aber es kann niemand was anderes als RPG. Und das soll ja auch gehen.
    Dietlinde Beck
    ... da kann ich doch nix dafür! Wer halt kein vernünftiges Werkzeug hat, der hat halt mehr Arbeit und das Resultat könnte auch schlechter sein, aber wenn man halt nicht lernen darf, will oder kann, aber auch dazu kann ich nix...

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Jul 2001
    Beiträge
    2.646
    Zitat Zitat von BenderD Beitrag anzeigen
    D*B.

    der sowas mit einer ordentlichen Programmiersprache machen würde...
    CL? ;-)
    Ich würde ja Pascal bevorzugen, da war sowas vor 30 Jahren schon ein Spass...
    www.RZKH.de
    IBM Champion 2022, 2023, 2024
    IBM i Community Advocate https://www.youracclaim.com/badges/6...c-7ad4ba147af6
    Common / CEAC
    http://pub400.com

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von holgerscherer Beitrag anzeigen
    CL? ;-)
    ... bei REXX hätte ich ja noch "eher als mit RPG" geantwortet. Mal ohne Fez: von den CAMT Formaten gibt es wohl eine XSD, da würde ich mal über Java und XOM aufsetzen und das dann halt in meine RPG Anwendung integrieren, falls ich es da brauche...

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    Mar 2006
    Beiträge
    3
    Zuerst mal: Lassen Sie sich nicht von diesen "ordentliche Programmiersprache" und dämlichen Vergleichen verwirren. Die Umstellung von den DTAUS/MTxxx-Dateien auf SEPA-,CAMT-XML-Dateien machen derzeit alle, und wer weder zu viel Zeit noch Spieltrieb hat, macht es in seiner Programmierwelt. Es mag Gründe geben, diese irgendwann zu wechseln / zu erweitern, aber diese Kleinigkeit ist keiner. Sie programmieren mit RPG wie ein sehr großer Teil IBMi-Anwender, damit kann man das problemlos machen, und es werden keine Ihrer komplexen Programme werden, sondern einfache.
    Unser Zeitaufwand war 1 Woche für alles: Überweisungsdateien, Abbuchungsdateien erstellen, Kontoauszüge importieren.

    Wie importiert man Kontoauszüge?
    XML ist nichts weiter als eine Datei mit 1 Zeile, die riesig breit ist. Damit ist klar: die Datei kommt ins IFS und wird zeichenweise gelesen. Bordmittel, isi RPG-Programming.
    Drin ist, was immer drin war (evtl. sind mehrere dieser Kapitel erlaubt):
    - Kopfsatz
    - 1...x Transaktionen
    - Endesatz

    Weil wir auf der IBMi so eine nützliche Datenbank haben, machen wir uns eine Datei mit einer String-Spalte in Breite eines XML-Transaktionsteiles und ein paar Key- und Statusfelder, z.B. Timestamp oder lfd. Vorgangsnummer. Da hinein zerhacken wir den XML-String aus der IFS-Datei: 1 Satz für den Kopfsatz, je einer pro Transaktion und einer für den Endesatz. Das Zerhacken geschieht durch Finden der entsprechenden XML-Tags, isi RPG-Programming.

    Der eigentliche Import ins Zielsystem geschieht in einem getrenntem Programm. Gründe:
    1) Getrennte Entwicklung und Tests möglich.
    2) Die Datei aus Schritt 1 kommt ins an die IBMi angeschlossene revisionssichere Archivsystem, damit ist die gesetzliche Archivierungspflicht für Geschäfts-/Zahlungsverkehrsdaten erfüllt.

    Der Import ist einfach: Schleife in der Datei über einen Vorgang, benötigte Felder aus dem Kopfsatz merken, jeder Transaktionssatz löst einen Schreibvorgang im internen System aus, wenn Endesatz, dann Log schreiben und tschüss.
    Das XML-Parsing (toller Name, banaler Vorgang), erledigt eine Tabellenvariable mit 2 Spalten: XMLTAG, XMLWERT, die für jeden Dateisatz neu gefüllt wird. Der Parser ist nur ein Zeichenleser und Stringbastler: von < bis > ist der XMLTAG, danach XMLWERT bis < / gefunden wird.
    Pfeifen Sie auf XSDs und XML-interne Metadaten. Sie wissen, welche XMLTAGs sie erwarten, und was als Wert dahinter stehen muss, woraus sich der Vailidierer ergibt. Wenn XMLWERT nicht valide: Ab ins Fehlerlog.

    Alles in allem ein denkbar einfacher Vorgang für jeden gestandenen RPG-Programmierer. Consultants und Tool-Hausierer blasen nur viel Dampf rein.

Berechtigungen

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