PDA

View Full Version : xml-sax Handler



peter.kinne
26-11-09, 08:12
Hallo XML-Freaks,

wir haben ein Problem mit dem Import von XML-Files
ins System i.

Wir verwenden dafür ein RPGLE, dass die IBM-Funktion(?)
"xml-sax" verwendet.

In dem XML-Satz wird in einem Feld der Wert

"Firmenname & Co. KG"

geliefert. Mit dem "&"-Zeichen gibt es allerdings ein Problem.

Die Funktion liefert nur die Zeichen " Co. KG" zurück. Der Rest vor dem "&" wird verschluckt.

Hat jemand hierfür eine simple Lösung. Mr. Google haben wir auch schon befragt.

Vielen dank im voraus,

Peter

RobertMack
26-11-09, 10:48
Hallo Peter,

sieh mal nach, ob es in dem LE eine Subroutine gibt, welche das "&" durch "&" zu ersetzen versucht. Nur so eine Vermutung...

Gruß,
Robert

peter.kinne
26-11-09, 11:38
Hi Robert,

nein, die gibt es nicht. Würde aber auch nicht klappen, weil
dann das Programm auf einen Fehler läuft.

Gruß

Peter

Fuerchau
26-11-09, 11:52
Du musst diese Informationen ggf. selber umsetzen:

The parser does not support entity references. When it encounters |an entity reference, it generates either an "unknown reference" or "unknown |attribute reference" event. The value of the event is the reference in |the form "&name;".

Mit anderen Worten: Diese Einträge werden komplett ignoriert.

WebSphere Development Studio: ILE RPG Programmer's Guide - Processing XML Documents (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/books_web/c0925076168.htm?resultof=%22%78%6d%6c%22%20%22%73% 61%78%22%20)

RobertMack
26-11-09, 12:10
An Ignorieren mag ich nicht glauben, dann wäre " Co. KG" nicht angekommen. Werden die Daten evtl. vor der Verarbeitung geprüft und (falsch) behandelt?

Fuerchau
26-11-09, 12:16
Es wird ja auch nur "&name;" ignoriert. Der Rest wird halt übernommen.

Überwach mal die angegebenen Ereignisse.

RobertMack
26-11-09, 12:20
Hab' ich mich verguckt? Nach meinem Verständnis gehen "Firmenname &" verloren. Und das riecht nach einem fehlerhaften %replace...

Fuerchau
26-11-09, 12:23
Da hast du dich wohl verguckt.
Das benutzte API analysiert die angegebene XML und ruft quasi per Callback (Ereignis) RPG-Routinen mit der Übergabe von Namen, Attributen und Werten auf.

Der Parser selber entfernt bereits "&name;"-Entities und löst ein Fehlerereignis aus.

Nix mit Replace o.ä.;).