Anmelden

View Full Version : XML-Parser



Seiten : [1] 2

jajonowak
30-11-18, 10:16
Hallo Forum,

ich mache gerade meine ersten "geh versuche" mit XML.
Über die ersten Fehler (CCSID) bin ich schon gestolpert, habe das aber schon übers Forum gelöst bekommen.

Zugrunde liegt ein XML-Dokument mit mehreren Elementen.

<?xml version="1.0" encoding="utf-8"?>
<DATA>
<Teile_Nr FIELDNAME="NFT_IDNR">20411</Teile_Nr>
<hgna FIELDNAME="NFT_NAM1">Schraube
<KEYGROUP GROUPNAME="Blechschraube">
<KEYCHARACTERISTIC NAME="ugna">Blechschraube</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_056">4,8</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_107">38<KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_401">DIN EN ISO 7049<KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_208">C<KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_150">verzinkt<KEYCHARACTERISTIC>
</KEYGROUP>
</hgna>
<Ersteller FIELDNAME="NFT_KON">BizTalkImport</Ersteller>
<Erstelldatum FIELDNAME="NFT_DAT">2018-05-24T16:07:12</Erstelldatum>
<Workflow-Status FIELDNAME="NFT_ZUST">20000</Workflow-Status>
<Aenderungsdatum FIELDNAME="NFT_MDAT">0001-01-01T01:00:00</Aenderungsdatum>
<Aenderer FIELDNAME="NFT_MKON"></Aenderer>
<meeh FIELDNAME="NFT_STK2">01</meeh>
<diart FIELDNAME="NFT_STK3">K</diart>
<bez1 FIELDNAME="NFT_STL0">Blechschraube</bez1>
<bez2 FIELDNAME="NFT_STL1">Linsen mit Kreuzschlitz</bez2>
<bez3 FIELDNAME="NFT_STL2"></bez3>
<herna FIELDNAME="NFT_STL3"></herna>
<hernr FIELDNAME="NFT_STL4"></hernr>
<cnnr FIELDNAME="NFT_STL5"></cnnr>
<ulfilenr FIELDNAME="NFT_STL6"></ulfilenr>
<csanr FIELDNAME="NFT_STL7"></csanr>
<arstk_ FIELDNAME="NFT_STL8">DIN EN ISO 7049</arstk_>
<arart_ FIELDNAME="NFT_STL9">2002523</arart_>
<herty FIELDNAME="NFT_STH0"></herty>
<csanorm FIELDNAME="NFT_STH1"></csanorm>
<Bemerkung FIELDNAME="ML_STRING"></Bemerkung>
<Spezifikation FIELDNAME="ML_STRING"></Spezifikation>
</DATA>
</PART></OBJECTS></PDMRequest>



Zuerst habe ich das XML Dokument zerlegt, also nur DATA mit den einzelnen Feldbeschreibungen
-DATA-
…. Felder ….
-/DATA.

hat auch funktioniert.
Anschliessend habe ich hgna eingefügt,
doch jetzt bin ich mit meinem XML-Wissen am Ende und habe auch keine Idee wie ich das beim
RPG darstellen soll.


Nachricht . . . : Das XML-Dokument entspricht nicht der RPG-Variablen;
Ursachencode 5.
Ursache . . . . : Beim Parsing eines XML-Dokuments hat der Parser
festgestellt, dass das XML-Dokument nicht der RPG-Variablen "PARM"
entspricht und die Optionen dies nicht zulassen. Der Ursachencode ist 5. Das
Unterfeld, für das der Fehler festgestellt wurde, ist "PARM(1).hgna.value".
Die Optionen sind "doc=File datasubf=value path=DATA allowmissing=yes
allowextra=yes case=convert". Der Name des XML-Dokuments ist


Programm:


d*-------------
d tmplteilenr ds qualified
d template
d FIELDNAME 15a
d value 30a


d tmplkeychar ds template
d qualified
d Name 15a
d value 30a
d*-------------
d tmplkeygroup ds template
d qualified
d GROUPNAME 15a
d value 30a
d KEYCHARACTERIS...
D TIC Dim(6) likeds(tmplkeychar)

d*-------------
d tmplhgnaField ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplhgna ds qualified
d template
d FIELDNAME 15a
d value 30a
d GROUPNAME 15a
d value1 30a
d keygroup Likeds(tmplkeygroup)

d*-------------
d tmplersteller ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplerstelldat ds qualified
d template
d FIELDNAME 15a
d value 30a
d*-------------
d tmplWorkflowSt ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplAenderungD ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplAenderer ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplWorkflowSt ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplAenderungD ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplAenderer ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplmeeh ds qualified
d template
d FIELDNAME 15a
d value 2a

d*-------------
d tmpldiart ds qualified
d template
d FIELDNAME 15a
d value 1a

d*-------------
d tmplbez1 ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplbez2 ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplbez3 ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplherna ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplhernr ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplcnnr ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplufilenr ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplcsanr ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplarstk_ ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplarart_ ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplherty ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplcsanorm ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplBemerkung ds qualified
d template
d FIELDNAME 15a
d value 30a

d*-------------
d tmplSpezifikat ds qualified
d template
d FIELDNAME 15a
d value 30a

d*============= d tmpldata ds qualified
d template
d Teile_Nr likeds(tmplteilenr)
d hgna likeds(tmplhgna)
d Ersteller likeds(tmplersteller)
d Erstelldatum likeds(tmplerstelldat)
d Workflow_Stat...
d us likeds(tmplWorkflowSt)
d Aenderungsdat...
d um likeds(tmplAenderungD)
d Aenderer likeds(tmplAenderer)
d meeh likeds(tmplmeeh)
d diart likeds(tmpldiart)
d bez1 likeds(tmplbez1)
d bez2 likeds(tmplbez2)
d bez3 likeds(tmplbez3)
d herna likeds(tmplherna)
d hernr likeds(tmplhernr)
d cnnr likeds(tmplcnnr)
d ulfilenr likeds(tmplufilenr)
d csanr likeds(tmplcsanr)
d arstk_ likeds(tmplarstk_)
d arart_ likeds(tmplarart_)
d herty likeds(tmplherty)
d csanorm likeds(tmplcsanorm)
d Bemerkung likeds(tmplbemerkung)
d Spezifikation likeds(tmplspezifikat)

d xmlpfad s 255a varying

d doc s 100a varying
d inz('doc=File datasubf=value ')
d allowmissing s 20a varying
d inz('allowmissing=yes ')
d allowextra s 20a varying
d inz('allowextra=yes ')
d case s 20a varying
d inz('case=convert')

d path s 255a varying
d inz('path=DATA ')

d status s n

Eval xmlpfad=%Trim(attchpath)+%Trim(FileName) ;


xml-into %handler(Xmldomhandler : status)
%xml(xmlpfad :
doc +
path +
allowmissing +
allowextra +
case);

eval *inlr=*On ;
p Xmldomhandler b

d pi 10i 0
d redcode n
d DATA likeds(tmpldata)
d dim(1)
d const
d nbrrec 10i 0 value
d x s 10i 0 inz




im Debug sieht es dann so aus:



EVAL DATA
DATA.TEILE_NR.FIELDNAME(1) = '********** '
DATA.TEILE_NR.VALUE(1) = '********** '
DATA.HGNA.FIELDNAME(1) = '********** '
DATA.HGNA.VALUE(1) = '********** '
DATA.HGNA.GROUPNAME(1) = '********** '
DATA.HGNA.VALUE1(1) = '********** '
DATA.HGNA.KEYGROUP.GROUPNAME(1) = '********** '
DATA.HGNA.KEYGROUP.VALUE(1) = '********** '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1,1) = '********** '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.VALUE(1,1) =
'********** '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1,2) = '********** '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.VALUE(1,2) =


Vielleicht kann mir hier einer auf die Sprünge helfen.

Vielen Dank
Hans-Joachim

andreaspr@aon.at
30-11-18, 11:24
Ich weis jetzt nicht ob das nur ein Copy-Paste Fehler ist, aber deine Abschluss-Tags stimmen schon mal nicht:


<KEYCHARACTERISTIC NAME="ugna_107">38<KEYCHARACTERISTIC>

statt


<KEYCHARACTERISTIC NAME="ugna_107">38</KEYCHARACTERISTIC>

Des weiteren hast du noch 3 weitere Ende-Tags (nach dem </DATA>) wo ich keinen Anfang finden konnte:

</DATA>
</PART></OBJECTS></PDMRequest>

Rainer Ross
30-11-18, 12:35
Ich habe bei meinen Parsings immer case=any definiert, damit spielt Groß- und Kleinschreibung keine Rolle.
countprefix=cnt_ ist auch eine gute Idee, dann weißt Du wieviel Elemente dein Array hat

Fuerchau
30-11-18, 19:22
Desweiteren würde ich lange Namen vollständig ausschreiben und dann erst "..." verwenden.

Nun betrachte deine Struktur mal genau:

Für jede Ebene benötigst du eine DS, die die untergeordneten Strukturen mit likeds(SubStruktur) einbettet, so dass du anschließend ein Element genauso ansprichst wie im PHP-Code.
In jeder DS müssen die Namen identisch zum Knoten und Attribut passen, wobei RPG unbekannte Zeichen bei "case=Convert" in "_" den Rest automatisch in Großbuchstaben umwandelt.

Deine vielen Template-DS'n sind hier vollkommen irrelevant.

Ich würde auch erst mal den XML-INTO ohne %Handler verwenden, da dieser das gesammte XML in die DS einliest.

jajonowak
02-12-18, 06:18
Vielen dank für die Antworten.

@andreasPr
a) / beim abtippen vergessen
b </PART></OBJECTS></PDMRequest> stehen am anfang (ebenfalls vergessen)
**** Demenz light ***

@Rainer Ross
werde ich berücksichtigen.

@Fuerchau
werde ich mal umstellen.


Danke Euch für Eure Tipps.
Hans-Joachim

Rainer Ross
03-12-18, 14:08
Hallo Hans-Joachim,

ich habe etwas rumprobiert und eine Lösung gefunden, die funktioniert. Bei den Optionen habe ich noch countprefix=cnt_ datasubf=data eingefügt.

Die Debug-Daten


DATA.TEILE_NR.FIELDNAME = 'NFT_IDNR '
DATA.TEILE_NR.DATA = '20411 '
DATA.HGNA.KEYGROUP.GROUPNAME = 'Blechschraube '
DATA.HGNA.KEYGROUP.CNT_KEYCHARACTERISTIC = 6
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1) = 'ugna '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(1) = 'Blechschraube '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(2) = 'ugna_056 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(2) = '4,8 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(3) = 'ugna_107 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(3) = '38 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(4) = 'ugna_401 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(4) = 'DIN EN ISO 7049 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(5) = 'ugna_208 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(5) = 'C '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(6) = 'ugna_150 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(6) = 'verzinkt '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(7) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(7) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(8) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(8) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(9) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(9) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(10) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(10) = ' '
DATA.ERSTELLER.FIELDNAME = 'NFT_KON '
DATA.ERSTELLER.DATA = 'BizTalkImport '
DATA.ERSTELLDATUM.FIELDNAME = 'NFT_DAT '
DATA.ERSTELLDATUM.DATA = '2018-05-24T16:07:12 '
DATA.WORKFLOW_STATUS.FIELDNAME = 'NFT_ZUST '
DATA.WORKFLOW_STATUS.DATA = '20000 '
DATA.AENDERUNGSDATUM.FIELDNAME = 'NFT_MDAT '
DATA.AENDERUNGSDATUM.DATA = '0001-01-01T01:00:00 '


Die korrigierte und modifizierte XML-Datei, statt Workflow-Status -> Workflow_Status


<?xml version="1.0" encoding="utf-8"?>
<DATA>
<Teile_Nr FIELDNAME="NFT_IDNR">20411</Teile_Nr>
<hgna FIELDNAME="NFT_NAM1">Schraube
<KEYGROUP GROUPNAME="Blechschraube">
<KEYCHARACTERISTIC NAME="ugna">Blechschraube</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_056">4,8</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_107">38</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_401">DIN EN ISO 7049</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_208">C</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_150">verzinkt</KEYCHARACTERISTIC>
</KEYGROUP>
</hgna>
<Ersteller FIELDNAME="NFT_KON">BizTalkImport</Ersteller>
<Erstelldatum FIELDNAME="NFT_DAT">2018-05-24T16:07:12</Erstelldatum>
<Workflow_Status FIELDNAME="NFT_ZUST">20000</Workflow_Status>
<Aenderungsdatum FIELDNAME="NFT_MDAT">0001-01-01T01:00:00</Aenderungsdatum>
<Aenderer FIELDNAME="NFT_MKON"></Aenderer>
<meeh FIELDNAME="NFT_STK2">01</meeh>
<diart FIELDNAME="NFT_STK3">K</diart>
<bez1 FIELDNAME="NFT_STL0">Blechschraube</bez1>
<bez2 FIELDNAME="NFT_STL1">Linsen mit Kreuzschlitz</bez2>
<bez3 FIELDNAME="NFT_STL2"></bez3>
<herna FIELDNAME="NFT_STL3"></herna>
<hernr FIELDNAME="NFT_STL4"></hernr>
<cnnr FIELDNAME="NFT_STL5"></cnnr>
<ulfilenr FIELDNAME="NFT_STL6"></ulfilenr>
<csanr FIELDNAME="NFT_STL7"></csanr>
<arstk_ FIELDNAME="NFT_STL8">DIN EN ISO 7049</arstk_>
<arart_ FIELDNAME="NFT_STL9">2002523</arart_>
<herty FIELDNAME="NFT_STH0"></herty>
<csanorm FIELDNAME="NFT_STH1"></csanorm>
<Bemerkung FIELDNAME="ML_STRING"></Bemerkung>
<Spezifikation FIELDNAME="ML_STRING"></Spezifikation>
</DATA>


Das RPG-Programm

ctl-opt dftactgrp(*no);
//------------------------------------------------------------------//
// //
// Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN //
// //
//----------------- //
// R.Ross 12.2018 * //
//------------------------------------------------------------------//
// XML-Array - Root //
//------------------------------------------------------------------//

dcl-ds Data qualified;
dcl-ds Teile_Nr;
Fieldname char(10);
Data char(20);
end-ds;
hgna likeds(hgna);
dcl-ds Ersteller;
Fieldname char(10);
Data char(20);
end-ds;
dcl-ds Erstelldatum;
Fieldname char(10);
Data char(20);
end-ds;
dcl-ds Workflow_Status;
Fieldname char(10);
Data char(20);
end-ds;
dcl-ds Aenderungsdatum;
Fieldname char(10);
Data char(20);
end-ds;
end-ds;

//------------------------------------------------------------------//
// Element hgna //
//------------------------------------------------------------------//

dcl-ds hgna qualified;
Keygroup likeds(Keygroup);
end-ds;

//------------------------------------------------------------------//
// Element Keygroup //
//------------------------------------------------------------------//

dcl-ds Keygroup qualified;
Groupname char(40);
cnt_Keycharacteristic uns(10);
Keycharacteristic likeds(Keycharacteristic)dim(10);
end-ds;

//------------------------------------------------------------------//
// Element Keycharacteristic //
//------------------------------------------------------------------//

dcl-ds Keycharacteristic qualified;
Name char(10);
Data char(20);
end-ds;

//------------------------------------------------------------------//
// Processing //
//------------------------------------------------------------------//

main();

*inlr = *on;
//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc Main;

dcl-s LocOpt varchar(256); // XML-Options
dcl-s LocFile varchar(128); // File

LocFile = '/Home/Import/xml/test01.xml'; // File

LocOpt = 'doc=file case=any allowextra=yes +
countprefix=cnt_ datasubf=data';

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

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


Herzliche Grüße
Rainer

Rainer Ross
03-12-18, 15:38
Das RPG-Programm läßt sich noch weiter vereinfachen


ctl-opt dftactgrp(*no);
//------------------------------------------------------------------//
// //
// Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN //
// //
//----------------- //
// R.Ross 12.2018 * //
//------------------------------------------------------------------//
// XML-Array - Root //
//------------------------------------------------------------------//

dcl-ds Data qualified;
Teile_Nr likeds(Data_tmp);
hgna likeds(hgna);
Ersteller likeds(Data_tmp);
Erstelldatum likeds(Data_tmp);
Workflow_Status likeds(Data_tmp);
Aenderungsdatum likeds(Data_tmp);
end-ds;

//------------------------------------------------------------------//
// Template Data //
//------------------------------------------------------------------//

dcl-ds Data_tmp template qualified;
Fieldname char(10);
Data char(20);
end-ds;

//------------------------------------------------------------------//
// Element hgna //
//------------------------------------------------------------------//

dcl-ds hgna qualified;
Keygroup likeds(Keygroup);
end-ds;

//------------------------------------------------------------------//
// Element Keygroup //
//------------------------------------------------------------------//

dcl-ds Keygroup qualified;
Groupname char(40);
cnt_Keycharacteristic uns(10);
Keycharacteristic likeds(Keycharacteristic)dim(10);
end-ds;

//------------------------------------------------------------------//
// Element Keycharacteristic //
//------------------------------------------------------------------//

dcl-ds Keycharacteristic qualified;
Name char(10);
Data char(20);
end-ds;

//------------------------------------------------------------------//
// Processing //
//------------------------------------------------------------------//

main();

*inlr = *on;
//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc Main;

dcl-s LocOpt varchar(256); // XML-Options
dcl-s LocFile varchar(128); // File

LocFile = '/Home/Import/xml/test01.xml'; // File

LocOpt = 'doc=file case=any allowextra=yes +
countprefix=cnt_ datasubf=data';

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

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

jajonowak
05-12-18, 05:47
Hallo Rainer,

vielen Dank für Deine Mühe.

Ich habe Dein Programm etwas erweitert (Felder hinzugefügt)

Dann kommt dann die Meldung:

Das XML-Dokument entspricht nicht der RPG-Variablen; Ursachencode 4.
4. Das XML-Dokument enthält keine XML-Attribute oder -Elemente, die
Unterfeldern entsprechen.

Debug:
EVAL Data
DATA.TEILE_NR.FIELDNAME = 'NFT_IDNR '
DATA.TEILE_NR.DATA = '20411 '
DATA.HGNA.KEYGROUP.GROUPNAME = 'Blechschraube '
DATA.HGNA.KEYGROUP.CNT_KEYCHARACTERISTIC = 7
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1) = 'ugna '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(1) = 'Blechschraube '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(2) = 'ugna_056 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(2) = '4,8 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(3) = 'ugna_107 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(3) = '38 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(4) = 'ugna_401 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(4) = 'DIN EN ISO 7049 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(5) = 'ugna_208 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(5) = 'C '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(6) = 'ugna_150 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(6) = 'verzinkt '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(7) = 'ugna_999 '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(7) = 'BlauGrau '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(8) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(8) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(9) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(9) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(10) = ' '
DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(10) = ' '
DATA.ERSTELLER.FIELDNAME = 'NFT_KON '
DATA.ERSTELLER.DATA = 'BizTalkImport '
DATA.ERSTELLDATUM.FIELDNAME = 'NFT_DAT '
DATA.ERSTELLDATUM.DATA = '2018-05-24T16:07:12 '
DATA.WORKFLOW_STATUS.FIELDNAME = ' '
DATA.WORKFLOW_STATUS.DATA = ' '
DATA.AENDERUNGSDATUM.FIELDNAME = 'NFT_MDAT '
DATA.AENDERUNGSDATUM.DATA = '0001-01-01T01:00:00 '
DATA.AENDERER.FIELDNAME = 'NFT_MKON '
DATA.AENDERER.DATA = ' '
DATA.MEEH.FIELDNAME = 'NFT_STK2 '
DATA.MEEH.DATA = '01 '
DATA.DIART.FIELDNAME = 'NFT_STK3 '
DATA.DIART.DATA = 'K '
DATA.BEZ1.FIELDNAME = 'NFT_STL0 '
DATA.BEZ1.DATA = 'Blechschraube '
DATA.BEZ2.FIELDNAME = 'NFT_STL1 '
DATA.BEZ2.DATA = 'Linsen mit Kreuzschl'
DATA.BEZ3.FIELDNAME = 'NFT_STL2 '
DATA.BEZ3.DATA = ' '
DATA.HERNA.FIELDNAME = 'NFT_STL3 '
DATA.HERNA.DATA = ' '
DATA.HERNR.FIELDNAME = 'NFT_STL4 '
DATA.HERNR.DATA = ' '
DATA.CNNR.FIELDNAME = 'NFT_STL5 '
DATA.CNNR.DATA = ' '
DATA.ULFILENR.FIELDNAME = 'NFT_STL6 '
DATA.ULFILENR.DATA = ' '
DATA.CSANR.FIELDNAME = 'NFT_STL7 '
DATA.CSANR.DATA = ' '
DATA.ARSTK_.FIELDNAME = 'NFT_STL8 '
DATA.ARSTK_.DATA = 'DIN EN ISO 7049 '
DATA.ARART_.FIELDNAME = 'NFT_STL9 '
DATA.ARART_.DATA = '2002523 '
DATA.HERTY.FIELDNAME = 'NFT_STH0 '
DATA.HERTY.DATA = ' '
DATA.CSANORM.FIELDNAME = 'NFT_STH1 '
DATA.CSANORM.DATA = ' '
DATA.BEMERKUNG.FIELDNAME = 'ML_STRING '
DATA.BEMERKUNG.DATA = ' '
DATA.SPEZIFIKATION.FIELDNAME = 'ML_STRING '
DATA.SPEZIFIKATION.DATA = ' '



jetzt frage ich mich wieso diese Fehlermeldung kommt.

Dann habe ich noch eine Frage, wenn jetzt in einem Zeile kommt:

<Artikel-Nr. FIELDNAME=NFT_ART_NUM">80030045</Artikel-Nr.>


wie definiere ich das Feld im Rpg?



Hans-Joachim

Rainer Ross
05-12-18, 09:12
Poste bitte das Programm, dann kann ich es nachvollziehen

Rainer Ross
05-12-18, 09:24
Dann habe ich noch eine Frage, wenn jetzt in einem Zeile kommt:
PHP-Code:
<code><code> <Artikel-Nr. FIELDNAME="NFT_ART_NUM">80030045 </code></code>

Die Empfehlung für gutes XML ist Bindestrich und Punkt zu vermeiden

XML Naming Rules

XML elements must follow these naming rules:


Element names are case-sensitive
Element names must start with a letter or underscore
Element names cannot start with the letters xml (or XML, or Xml, etc)
Element names can contain letters, digits, hyphens, underscores, and periods
Element names cannot contain spaces

Any name can be used, no words are reserved (except xml).

Best Naming Practices
<firstname><lastname><book_title><the_title_of_the_book>

Create descriptive names, like this: <person>, <firstname>, <lastname>.
Create short and simple names, like this: <book_title> not like this: <the_title_of_the_book>.
Avoid "-". If you name something "first-name", some software may think you want to subtract "name" from "first".
Avoid ".". If you name something "first.name", some software may think that "name" is a property of the object "first".
Avoid ":". Colons are reserved for namespaces (more later).
Non-English letters like éòá are perfectly legal in XML, but watch out for problems if your software doesn't support them.



<firstname><lastname><book_title><the_title_of_the_book>
Quelle: https://www.w3schools.com/xml/xml_elements.asp


<firstname><lastname><book_title><the_title_of_the_book></the_title_of_the_book></book_title></lastname></firstname></the_title_of_the_book></book_title></lastname></firstname></the_title_of_the_book></book_title></lastname></firstname>