PDA

View Full Version : xml-sax Text abgeschnitten



Seiten : 1 [2]

Armin
09-12-20, 08:28
SQL interessiert mich brennend. Gibt es evtl. ein übersichtliches Beispiel auf eine Datei im IFS?

Fuerchau
09-12-20, 09:12
Hier gibts Doku und Beispiele:
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/rzasp/rzaspkickoff.htm

Klar ist jede Sprache die XML native kann besser als ILERPG.
Aber auf der IBM i kannst du ebenso Java oder Node.js verwenden.

B.Hauser
09-12-20, 09:43
Hier ist ein ganz einfaches Beispiel, bei dem auf eine IFS-Datei zugegriffen wird.


Select a.*
from XMLTABLE('Staff/Department/Employee'
passing xmlparse(Document Get_xml_file('/home/Hauser/EmplXML.xml'))
Columns EmployeeNo Integer Path '@Id',
FirstName VarChar(30) Path 'Name/FirstName',
LastName VarChar(30) Path 'Name/LastName',
Title VarChar(30)
Default '' Path 'Name/LastName/@Title',
Salary Dec(11, 2)
Default 0 Path 'Privacy/Salary',
Currency VarChar(30)
Default '' Path 'Privacy/Salary/@Currency') a;


Für die Details solltest Du Dir allerdings das White Paper anschauen, das Baldur angegeben hat.

Fuerchau
09-12-20, 09:48
Achja, was die CCSID 1208 angeht, so muss die IFS-Datei dieses Attribut bereits vorher haben (CHGATR).
SQL und XML-INTO interessieren sich leider nicht für die Processing Instruction: encoding="xxx".
Dafür müsste man die IFS-Datei nämlich nach der Encoding-Erkenntnis noch mal neu einlesen.

B.Hauser
09-12-20, 10:06
... ach ja, wenn man die xml-Datei direkt mit RPG erzeugt (SQLTYPE(XML_CLOB_FILE)) wird die Datei automatisch in UTF-8 generiert (zumindest sofern man den Default in der Abfrage-Options-Datei QAQQINI nicht geändert hat). Die Konvertierung und Ausgabe in UTF-8 erfolgt automatisch!
... und wenn die IFS-Datei UTF-8 ist, kann SQL die Daten auch problemlos nach EBCDIC konvertieren.

Birgitta

Fuerchau
09-12-20, 10:40
Hm, ich gebe die CCSID in der definierten Variable an, also CCSID.
Wenn die IFS-Datei vor der Ausgabe bereits mit einer falschen CCSID vorhanden ist, wird leider diese CCSID verwendet. Also auch hier, zur Sicherheit immer vorher löschen. Man weiß ja nie, ob da nicht einer mit CHGATR rumgespielt hat.

Hier gibts ein paar nähere Erläuterungen:
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzasp/rzaspxml1516.htm
Per CLOB_FILE wird immer die File-CCSID genommen.

Wofür da noch die QAQQINI verwendet wird erschließt sich mir nicht, da ich die Variablen doch mit einer CCSID definieren kann bzw. Defaults via Header-Options eingestellt werden.