[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    904

    XML-INTO - ich glaub mich tritt ein Pferd

    Hi Forum,

    ich wende mich, nach x Versuchen, an euch um Rat.

    Frage, hat jemand mal ein Peppol XML Dokument mit XML-INTO geparst?

    Mein Problem:

    Options-Parameter:
    options = 'doc=file +
    ns=remove +
    case=any +
    allowmissing=yes +
    allowextra=yes +
    // datasubf=value +
    countprefix=count_ +
    path=Order';

    Wenn ich nun allowmissing=yes (was auch sinnvoll ist) angebe, krallt sich der XML-INTO auch Definitionen wie "bis:order_..." in den Namenspaces und knallt mir gleich einen Fehler "RQN0353, Das XML-Dokument entspricht nicht der RPG-Variablen; Ursachencode 1" raus.

    Ursache dafür ist, dass er den obig erwähnten Ausdruck "bisrder_" als "order" findet und den überhaupt nicht mag. Die allow... wegzulassen bringt auch nichts, da kommen andere Meldungen, da nicht alle Elemente vorhanden sind. (Ursache 4 oder 5).

    Oder muss ich dieses XML SAXen? Wär nett gewesen mit XML-INTO.

    Wenn jemand einen Tipp dazu hat, nur her damit. Danke.
    kf

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Wie ist denn das zugehörige Datenstruktur-Unterfeld definiert, bzw. welchen Namen hat das Unterfeld?
    Als Order_... oder Bis_Order_... ?

    Was passiert, wenn Du countprefix=XXX angibst und entprechende Unterfelder für dein Präfix definierst und dafür allowmissing weglässt?

    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
    Jan 2007
    Beiträge
    904
    Hallo Birgitta,

    Seit ich die nested Templates definiert habe, knallt's. Der Fluch dabei ist, dass der Ausdruck "order" an diversen Stellen vorkommt, auch dort wo kein Element stattfindet.

    Fehlermeldung: Unterfeld, für das der Fehler festgestellt wurde, ist "order". Ich lösch mal alle Elemente raus, so dass ich ein reines XML habe und schau mal.
    kf

  4. #4
    Registriert seit
    Jan 2007
    Beiträge
    904
    Irgendwie beisst sich da die Katze in den Schwanz. Stimmt das XML genau mit den Templates überein, gibt es keinen Fehler. Dann kann ich auch das allowmissing=yes weglassen. Doch genau das ist die Krux. Lasse ich das allowmissing=yes weg, erhalte ich einen Fehler, wenn im Template das Element vorhanden ist, im XML jedoch nicht.

    Allerdings weiss ich nie genau, wie das XML daher kommt, da viele Elemente fakultativ sind und genau da knallt's - bämmm, Fehler "Unterfeld Pfad nicht gefunden RC-1". Gemäss einem Post irgendwo in der Wolke, war das mal nicht so, wurde aber durch ein PTF verschlimmbessert. Oder weiss da jemand etwas genaueres.
    kf

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Versuche am besten "case=convert".
    Damit werden dann auch im Namen nicht zulässige Zeichen als "_" ersetzt.
    Aus "XXX:YYY" wird dann "XXX_YYY".
    Ich denke nicht, dass es mit allowmissing oder allowextra zu tun hat.
    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
    Jan 2007
    Beiträge
    904
    Danke Baldur,
    ich habs's probiert, kein Erfolg.

    Ich kann mit meinen Definitionen problemlos eine Adresse einlesen, sofern alle Felder übereinstimmen. Wenn ich jetzt in der RPG Datenstruktur z.B. das Feld eMail definiere, aber im XML dieses nicht vorkommen muss, erhalte ich den Fehler RNX0353, RC1.

    Ich hoffe ich hab's nun verständlich formuliert.
    kf

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ich würde es mal mit "ns=merge" versuchen:

    merge indicates that the colon is replaced with underscore in the XML name when matching an RPG
    name. For example, if the XML name is ABCEF, the name ABC_DEF is used when comparing to an
    RPG name.

    Damit treten dann keine Namenskonflikte auf und missing/extra sollte funktionieren.
    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

  8. #8
    Registriert seit
    Jan 2007
    Beiträge
    904
    Der ns=remove nimmt mir die vorgängigen cac: oder cbc: vor den Elementen weg. Ich kann ja keine Felder wie cbc:Name in RPG definieren. Der merge hat nix gebracht. Grundsätzlich funktioniert ja der XML-INTO wenn 1:1 die Felder und XML übereinstimmen. Ich frage mich auch ob der allowmissing explizit den Elementpfad anspricht oder sich vielmehr auf Element Arrays bezieht.
    kf

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ich denke doch das hat mit dem namespace zu tun.
    Du kannst die Felder in ILERPG dann in "cbc_Name" definieren, dann passt es doch.
    Probiers doch einfach mal.
    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

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    904
    Danke der regen Anteilnahme.

    Mittlerweile bin ich ein bisschen weiter. Folgendes, nehme ich ein normales Peppol Standard Dokument per Definition, ist alles in Butter. Sobald ich es aber in einen "StandardBusinessDocument"-Header einbinde, knallt's. Und hier muss ich noch meine Lupe hervor kramen.

    Sonst, alles gut mit dem XML-INTO.
    kf

  11. #11
    Registriert seit
    Jan 2007
    Beiträge
    904
    Gelöst!

    Ich weiss nicht ob es ein Bug ist, aber ich nehme es an. Wenn der Ausdruck der eingebundenen Templates zu lang wird, gibt es einen Fehler RNX0353 RC-1 aus.

    In meinem Fall habe ich das Wurzelelement "StandardBusinessDocument" auf "Standard" reduziert und das Programm lief problemlos mit all seinen vorhandenen und nicht vorhandenen Elementen durch. Allerdings nehme ich an, wenn jetzt nochmals eine Einbettung ansteht, knallt's wieder.

    Uebrigens, das ist bisher der längste:
    STANDARDBUSINESSDOCUMENT.ORDER.ACCOUNTINGCUSTOMERP ARTY.PARTY.PARTYLEGALENTITY.REGISTRATIONADDRESS.CO UNTRY.IDENTIFICATIONCODE =

    Wie ich das verarbeite? Fragt mich später.
    kf

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Scheinbar unterstützt XML-Into nur Namen mit max. 128 Zeichen, statt der möglichen 4096.
    Dies weist dann wohl auf einen Fehler hin.

    Statt XML-INTO kannst du ja auch SQL verwenden. Da selektierst du nur eine Tabelle und keine Baumstruktur. Birgitta hat da immer sehr schöne SQL-Beispiele und du kannst durch INTO ja ganz andere Namen nehmen;-).
    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. Antworten: 8
    Letzter Beitrag: 18-05-16, 15:11
  2. Antworten: 5
    Letzter Beitrag: 11-12-13, 03:27

Berechtigungen

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