Anmelden

View Full Version : XML-Daten mit "&" in RPG-Datenbank übertragen



Banruf
10-01-14, 08:53
Guten Morgen allerseits!

Ich soll von der UN-Terrorliste (http://www.un.org/sc/committees/1267/AQList.xml) bestimmte Daten in eine RPG-Datenbank übertragen, dabei gibt es nur ein Problem:

Die XML-Datei enthält keine &amps , sondern "&".

Ich habe die Übertragung mit xml-into gemacht, klappt soweit auch alles.
Nun gibt es beim Lesen des 1. Satzes, der ein solches Zeichen erhält, ein Problem:

Alle Felder sind leer, mein Programm springt aus der Routine.
Nachdem ich aber die "&" durch &amps ersetzt habe, klappt das Programm tadellos.

Nun habe ich versucht, das ganze mit z.B. Übertragen per xml-sax, ccsid ändern etc. , aber ohne Erfolg.

Da ich zur Zeit keine Idee mehr habe, wende ich mich in meiner Not an euch!

Im Anhang noch mein Programmcode, der Übersicht halber werden in dem Programm nur die Personen gespeichert. Es wird außerdem der Name statt der ID geprüft, weil die ID numerisch und beim fehlerhaften Satz ("blank") direkt nen Absturz verursacht.


H DFTACTGRP(*NO)
FTRR01PF UF A E DISK



D INDIVIDUAL DS QUALIFIED
D dim(1000)
D
D dataid 8 0
D first_name 34
D second_name 34
D third_name 34
D last_day_updated...
D LIKEDS(UpdateDS)
D individual_address...
D LIKEDS(AdresseDS)
D*
D UpdateDS DS QUALIFIED
D value 20A
D*
D AdresseDS DS QUALIFIED
D street 34A
D city 25A
D country 25A
D*
D x s 10i 0
D xmlfile s 1000a varying
D options s 100a varying

/free

// CHANGE THIS:
xmlfile = '/ogsid/bernardy/Test.xml';

options = 'doc=file +
path=CONSOLIDATED_LIST/INDIVIDUALS/INDIVIDUAL +
case=any +
allowextra=yes +
allowmissing=yes';

xml-into(e) INDIVIDUAL %xml((xmlfile): options);

x=1;

dow INDIVIDUAL(x).FIRST_NAME <> *blanks or
INDIVIDUAL(x).SECOND_NAME <> *blanks or
INDIVIDUAL(x).THIRD_NAME <> *blanks;

TRGRP = 'P';
TRID = INDIVIDUAL(x).DATAID;
TRNM1 = INDIVIDUAL(x).FIRST_NAME;
TRNM2 = INDIVIDUAL(x).SECOND_NAME;
TRNM3 = INDIVIDUAL(x).THIRD_NAME;
TRUPD = INDIVIDUAL(x).LAST_DAY_UPDATED.VALUE;
TRSTR = INDIVIDUAL(x).INDIVIDUAL_ADDRESS.STREET;
TRORT = INDIVIDUAL(x).INDIVIDUAL_ADDRESS.CITY;
TRLND = INDIVIDUAL(x).INDIVIDUAL_ADDRESS.COUNTRY;
write(e) RTRR01PF;
x = x + 1;

enddo;

*inlr=*on;

/end-free

Fuerchau
10-01-14, 09:00
Leider ist der Unterschied des "&"-Zeichens verloren gegangen.
Es ist häufiger der Fall, dass bestimmte Sonderzeichen, die XML-Spezifisch sind, als HTML-/Unicode-Ersatzzeichen eingebettet werden.
Die meisten XML-Reader können das auch verarbeiten.

Was fehlerhafte Daten angeht, so hilft halt nur alle Felder als Char definieren und benötigte Umwandlungen in einer Monitor-Group selber machen.

Banruf
10-01-14, 09:04
Erstmal danke für die schnelle Antwort:


Leider ist der Unterschied des "&"-Zeichens verloren gegangen.

Habe ich selber eben gemerkt und im Beitrag behoben.


Was fehlerhafte Daten angeht, so hilft halt nur alle Felder als Char definieren und benötigte Umwandlungen in einer Monitor-Group selber machen.

Dacht ich mir schon, hatte nur gehofft, dass irgendwie innerhalb von RPG abwickeln zu können, trotzdem danke!!