-
Der Debugger löst das etwas anders auf.
Für den Compiler ist der ArrayIndex dann anzugeben, wenn man ein DIM(nn) defineirt hat.
head_t. Line(n).LineItemNumber
Funktioniert natürlich nur, wenn du das Template auch qualified machst:
d Line_t ds template qualified
-
Danke für die rasche Antwort.
Hat aber leider noch nicht funktioniert
dLine_t ds template qualified
d LineItemNumber...
d 3a
d ProductNumber...
d 10a
dhead_t ds qualified inz
d OrderNumber 10a
d VersionNumber likeDS(VersionNumber_t)
d Line likeDS(Line_t) Dim(05)
d Cnt_Line 3 0
dorders ds qualified inz
d head LikeDS(head_t)
EVAL orders ORDERS.HEAD.ORDERNUMBER = '1TJW5S 2 '
ORDERS.HEAD.VERSIONNUMBER.VERSIONNAME = 'XML.EANCOM.MBO'
ORDERS.HEAD.VERSIONNUMBER.VERSIONNO = '8.1 '
ORDERS.HEAD.LINE.LINEITEMNUMBER(1) = '1 '
ORDERS.HEAD.LINE.PRODUCTNUMBER(1) = 'E1527875LG'
ORDERS.HEAD.LINE.LINEITEMNUMBER(2) = '2 '
ORDERS.HEAD.LINE.PRODUCTNUMBER(2) = 'N1527875RL'
ORDERS.HEAD.LINE.LINEITEMNUMBER(3) = ' '
ORDERS.HEAD.LINE.PRODUCTNUMBER(3) = ' '
ORDERS.HEAD.LINE.LINEITEMNUMBER(4) = ' '
eval f41 = head_t.Line(1).LineItemNumber;
eval f42 = head_t.Line(2).LineItemNumber;
EVAL head_t.Line(1)
HEAD_T.LINE.LINEITEMNUMBER(1) = ' '
HEAD_T.LINE.PRODUCTNUMBER(1) = ' '
Gruß
Franco
-
Wie sieht denn das zugehörige XML-INTO Statement aus?
Birgitta
-
Guten Morgen,
/free
options = 'doc=file case=any allowmissing=yes allowextra=yes ' +
'countprefix=cnt_ datasubf=data ';
Filename = '/XMLOrderIN/20191031_221735_1TJW5S_2.xml';
xml-into orders %xml(%Trim(Filename) ptions);
... ... ...
Gruß
Franco
-
Guten Morgen,
gibt es im Forum vielleicht noch eine Idee?
Franco
-
Hallo Franko,
anbei die Lösung für das Problem
HTML-Code:
ctl-opt dftactgrp(*no);
//------------------------------------------------------------------//
// //
// Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN //
// //
//----------------- //
// R.Ross 11.2019 * //
//------------------------------------------------------------------//
// XML-Array - Root //
//------------------------------------------------------------------//
dcl-ds Orders qualified;
Head likeds(Head);
end-ds;
//------------------------------------------------------------------//
// Template Head //
//------------------------------------------------------------------//
dcl-ds Head template qualified;
VersionNumber likeds(VersionNumber);
OrderNumber char(20);
Line likeds(Line) dim(05);
Cnt_Line int(10);
end-ds;
dcl-ds VersionNumber template qualified;
VersionName char(20);
VersionNo char(20);
end-ds;
//------------------------------------------------------------------//
// Template Line - Enthält die Produkte //
//------------------------------------------------------------------//
dcl-ds Line template qualified;
LineItemNumber char(03);
ProductNumber char(10);
end-ds;
//------------------------------------------------------------------//
// Processing //
//------------------------------------------------------------------//
main();
*inlr = *on;
//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc Main;
dcl-s LocOptions varchar(128); // XML-Options
dcl-s LocFile varchar(128); // File
dcl-s LocInd uns(10); // Index
dcl-s ItemNumber like(Line.LineItemNumber);
dcl-s ProductNumber like(Line.ProductNumber);
LocFile = '/Home/Import/xml/20191031_221735_1TJW5S_2.xml';
LocOptions = 'doc=file case=any allowextra=yes +
countprefix=cnt_ datasubf=data';
clear Orders; // Init XML-Struktur
xml-into Orders %xml(LocFile:LocOptions);
for LocInd = 1 to Orders.Head.Cnt_Line; // Loop Produkte
ItemNumber = Orders.Head.Line(LocInd).LineItemNumber;
ProductNumber = Orders.Head.Line(LocInd).ProductNumber;
endfor;
end-proc;
//------------------------------------------------------------------//
-
Lieber Rainer ...
... und wenn Du nun noch einen Konverter hast, der die XSD gleich in DS Templates umsetzt, bist Du mein Tagesheld. Good Job!
kf
-
Ein Konverter wäre richtig cool. Es würde auch mit SQL gehen
HTML-Code:
SELECT *
FROM XMLTABLE('/ORDERS/HEAD/LINE'
PASSING xmlparse(
DOCUMENT get_blob_from_file('/Home/Import/xml/mein.xml'))
COLUMNS
"ProductNumber" varchar(20) PATH 'ProductNumber',
"ProductName" varchar(20) PATH 'ProductName'
);
-
Funktioniert super, dann halt total free. Gruß Franco FDH
-
Das freut mich sehr, dass es jetzt funktioniert
Habt Ihr Interesse coole Webanwendungen auf IBM i zu programmieren?
- Responsive Webdesign für PC, iPad und Smartphone
http://www.myhofi.com/dev/html/DataViewResponsive.html
- Stammdaten verwalten http://www.myhofi.com/tms/HTML/MySubfileApp04.html
- Projektverwaltung mit Gantt http://www.myhofi.com/tms/HTML/MyGantt.html
- schnelle Volltextsuche http://www.myhofi.com/music/html/musicsearch.html
Hier gibts die Workshops https://www.toolmaker.de/schulungen/
Herzliche Grüße
Rainer Ross It-Beratung
Similar Threads
-
By fdh in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 20-11-19, 13:43
-
By it-dol in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 24-07-14, 13:05
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks