PDA

View Full Version : XML-Einlesen



tarkusch
12-04-14, 08:40
Hallo,

habe zum ersten mal XML eingelesen.
Ich habe mir eine Datenstruktur erstellt die dann wie folgt im Programm abarbeite/einlese:

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.
<comtech:header><record><comelem:<font size="3"><comtyp:certifiedmodelcode>
</comtyp:certifiedmodelcode></comelem:</record></comtech:header>
Dank im Voraus

Tarki

B.Hauser
12-04-14, 09:01
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

tarkusch
12-04-14, 09:35
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


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

B.Hauser
12-04-14, 14:35
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.

tarkusch
12-04-14, 17:29
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