Anmelden

View Full Version : XML-Datei einlesen



alex61
05-08-19, 11:21
Hallo Forum,
wie lese ich u.a. HTML-File (Beispiel für einen Artikelstamm ohne Mehrfachsätze) mit dem Befehl XML-INTO ein ? Für Hilfe wäre ich dankbar.











<?xml version="1.0" encoding="UTF-8"?>

<SHARK-ERP><Article><ArticleNumber>4711</ArticleNumber><Owner/><AlternativeArticleNumber>4711_1</AlternativeArticleNumber><EAN>1111111111111</EAN><Description>Kölner Wasser</Description><Description1>Echt kölnisch Wasser</Description1><Description2>Wasser aus Köln 250ml</Description2><Unit>Stück</Unit><BatchNumberRequired>0</BatchNumberRequired><SerialNumberRequired>0</SerialNumberRequired><Packages><Package><Replenishments><Replenishment><Zone>A</Zone><LocationStrategy>Floating</LocationStrategy></Replenishment></Replenishments><LocationTypes><LocationType><Name>LMB_821_4/7</Name><Qty>50</Qty></LocationType><LocationType><Name>LMB_821_7/7</Name><Qty>90</Qty></LocationType></LocationTypes></Package></Packages><Misc1/><Misc2/><Misc3/><Misc4/><Misc5/></Article>

Fuerchau
05-08-19, 14:55
Schau dir die Strukturen genau mittels XML-Editor an (z.B. XML-Notepad).
Anschließend baust du eine entsprechende hierarchische DS auf.
Beim Einlesen gibst du entsprechende Optionen für: ignorieren fehlende Knoten, übersetzen ungültige Zeichen, ignorieren GroßKlein an.

Hier findest du eine Diskussion dazu:
http://newsolutions.de/forum-systemi-as400-i5-iseries/threads/21518-XML-Parser

Rainer Ross
05-08-19, 16:30
Hi Alex,
anbei die Lösung für die Aufgabe



ctl-opt main(main) dftactgrp(*no) option(*nounref);
//------------------------------------------------------------------//
// //
// Test - Parse XML - Alex //
// //
//----------------- //
// R.Ross 08.2019 * //
//------------------------------------------------------------------//
// Array XML-File //
// Das Root-Element SHARK-ERP wird mit Rsp = Response überschrieben //
// path=SHARK-ERP //
//------------------------------------------------------------------//

dcl-ds Rsp qualified inz;
dcl-ds Article;
ArticleNumber char(10);
AlternativeArticleNumber char(10);
EAN char(13);
Description char(30);
Description1 char(30);
Description2 char(30);
Unit char(30);
BatchNumberRequired char(30);
SerialNumberRequired char(30);
dcl-ds Packages;
dcl-ds Package;
dcl-ds Replenishments;
dcl-ds Replenishment;
Zone char(10);
LocationStrategy char(10);
end-ds;
end-ds;
dcl-ds LocationTypes dim(10);
dcl-ds LocationType;
Name char(30);
Qty char(10);
end-ds;
end-ds;
end-ds;
end-ds;

end-ds;
end-ds;

//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc main;

dcl-s LocOpt varchar(256);
dcl-s LocFile varchar(256);

Locfile = '/home/import/xml/NewSolutions01.xml';

LocOpt = 'doc=file +
path=SHARK-ERP +
case=any +
allowextra=yes +
allowmissing=yes'; // XML-Options

xml-into rsp %xml(LocFile:LocOpt);

end-proc;
//------------------------------------------------------------------//



Herzliche Grüße
Rainer

Fuerchau
05-08-19, 17:03
Ich hätte da noch den Counter für die DIM's mit aufgenommen;-).

Rainer Ross
07-08-19, 12:02
Jetzt mit Counter



ctl-opt main(main) dftactgrp(*no) option(*nounref);
//------------------------------------------------------------------//
// //
// Test - Parse XML - Alex //
// //
//----------------- //
// R.Ross 08.2019 * //
//------------------------------------------------------------------//
// Array XML-File //
// Das Root-Element SHARK-ERP wird mit Rsp = Response überschrieben //
// path=SHARK-ERP //
//------------------------------------------------------------------//

dcl-ds Rsp qualified inz;
dcl-ds Article;
ArticleNumber char(10);
AlternativeArticleNumber char(10);
EAN char(13);
Description char(30);
Description1 char(30);
Description2 char(30);
Unit char(30);
BatchNumberRequired char(30);
SerialNumberRequired char(30);
dcl-ds Packages;
dcl-ds Package;
dcl-ds Replenishments;
cnt_Replenishment uns(10);
dcl-ds Replenishment dim(05);
Zone char(10);
LocationStrategy char(10);
end-ds;
end-ds;
dcl-ds LocationTypes;
cnt_LocationType uns(10);
dcl-ds LocationType dim(05);
Name char(30);
Qty char(10);
end-ds;
end-ds;
end-ds;
end-ds;

end-ds;
end-ds;

//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc main;

dcl-s LocOpt varchar(256);
dcl-s LocFile varchar(256);

Locfile = '/home/import/xml/NewSolutions01.xml';

LocOpt = 'doc=file +
path=SHARK-ERP +
countprefix=cnt_ +
case=any +
allowextra=yes +
allowmissing=yes'; // XML-Options

xml-into rsp %xml(LocFile:LocOpt);

end-proc;
//------------------------------------------------------------------//