Hallo Leute,

ich habe bei uns in der Firma folgende Aufgabe zu lösen.


Ich erhalte via Message Queue Messages die XML beinhalten.

Nun soll ich diese XML mit den API's, die im QXML4PR520/ 'XML RPG Parser 5,2 API Interface' zur Verfügung stehen, parsen und in DB2 stellen.

Für den Umgang mit diesen API's stehen von der IBM einige kleine Beispielprogramme zur Verfügung, die jedoch immer auf XML-Files zugreifen, die im IFS abgelegt sind.



Code aus dem Beispielprogramm

ALLOC 10 GetTagOpt
ALLOC 256 XmlFile
ALLOC 256 strgbuf
Move input to string areas >>
EVAL %str(XmlFile:256) = %TRIMR(XmlFile)
EVAL %str(GetTagOpt:256)='*'
Initialize XML environement, provide pointer to DOM exception area
CALLP QxmlInit(ENVDATA)
Create a Parser object, set validation options and parse
EVAL DomParse = QxmlXercesDOMParser_new(PRSDATA)
Validate document arg - set to 1 if DTD available
and you want to use it
CALLP QxmlXercesDOMParser_setValidationScheme
(DomParse : 0)
CALLP QxmlXercesDOMParser_parse_SystemId(DomParse:
XmlFile*:Qxml_CCSID37:0)
Get parse document
EVAL DomDoc = QxmlXercesDOMParser_getDocument
(DomParse)
Get a node list of all ('*') elements by tag name
EVAL DomNodeList = QxmlDOMDocument_getElementsByTagName
(DomDoc:GetTagOpt:Qxml_CHARSTR:1)

Ende Code

Mein Problem liegt nun darin, dass ich nicht weiss wie ich die XML aus der Message in den Parser bringe. Jemand gab mir den Tipp ich soll es anstelle des API's QxmlXercesDOMParser_parse_SysemId( ) zum parsen mit den API's


QxmlMemBufInputSource_new( )
QXmlXercesDOMParser_parse_InputSource( )


probieren. Hab ich gemacht, das funktioniert bei mir nicht, da spätestens beim Erstellen der DomNodeList das Programm mit der Meldung 'Zeiger nicht gesetzt' stoppt.

Nun die prinzipielle Frage: Bin ich mit diesen API's auf dem richtigen Weg oder liege ich völlig falsch? Bin um jeden Tipp dankbar.

Roger M.