PDA

View Full Version : XML-INTO - ich glaub mich tritt ein Pferd



Seiten : [1] 2

camouflage
17-02-20, 12:40
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 "bis:o:o:order_" 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.

B.Hauser
17-02-20, 13:29
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

camouflage
17-02-20, 13:44
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.

camouflage
17-02-20, 15:41
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.

Fuerchau
17-02-20, 16:31
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.

camouflage
17-02-20, 16:40
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.

Fuerchau
17-02-20, 16:53
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 ABC:DEF, the name ABC_DEF is used when comparing to an
RPG name.

Damit treten dann keine Namenskonflikte auf und missing/extra sollte funktionieren.

camouflage
17-02-20, 17:10
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.

Fuerchau
17-02-20, 17:49
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.

camouflage
18-02-20, 09:06
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.