-
XML-Parser
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.
PHP-Code:
<?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.
PHP-Code:
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:
PHP-Code:
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:
PHP-Code:
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
-
Ich weis jetzt nicht ob das nur ein Copy-Paste Fehler ist, aber deine Abschluss-Tags stimmen schon mal nicht:
HTML-Code:
<KEYCHARACTERISTIC NAME="ugna_107">38<KEYCHARACTERISTIC>
statt
HTML-Code:
<KEYCHARACTERISTIC NAME="ugna_107">38</KEYCHARACTERISTIC>
Des weiteren hast du noch 3 weitere Ende-Tags (nach dem ) wo ich keinen Anfang finden konnte:
HTML-Code:
</DATA>
</PART></OBJECTS></PDMRequest>
-
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
-
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.
-
Vielen dank für die Antworten.
@andreasPr
a) / beim abtippen vergessen
b 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
-
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
PHP-Code:
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
HTML-Code:
<?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
PHP-Code:
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
-
Das RPG-Programm läßt sich noch weiter vereinfachen
Code:
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;
//------------------------------------------------------------------//
-
Hallo Rainer,
vielen Dank für Deine Mühe.
Ich habe Dein Programm etwas erweitert (Felder hinzugefügt)
Dann kommt dann die Meldung:
PHP-Code:
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:
PHP-Code:
<Artikel-Nr. FIELDNAME=NFT_ART_NUM">80030045</Artikel-Nr.>
wie definiere ich das Feld im Rpg?
Hans-Joachim
-
Poste bitte das Programm, dann kann ich es nachvollziehen
-
Dann habe ich noch eine Frage, wenn jetzt in einem Zeile kommt:
PHP-Code:
<Artikel-Nr. FIELDNAME="NFT_ART_NUM">80030045
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
HTML-Code:
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.
Quelle: https://www.w3schools.com/xml/xml_elements.asp
-
Insofern schon besser, sich daran zu halten. Für Sprachen wie Java/.Net/o.ä. ist das letztlich aber egal.
Für ILERPG werden ungültige Namen ja sowieso (case=convert) in "_" übersetzt.
Die XML-Schreibweise für Namen ist i.d.R. "CamelCase", also den Höckern des Kamels nachempfunden.
Großbuchstaben am Anfang eines Wortes, der Rest dann klein, z.b. "ArtikelNummer".
-
@fuerchau
Leider wird mir die XML-Datei von der Java- o.ä. -Fraktion zur Verfügung gestellt.
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