The RODL resource file has been correctly generated with our tools. The files I sent you were generated with it. The XML can be loaded with common XML readers and can be parsed correctly.
The issues arise because after loading the resource file and creating an initial instance of TRODLLibrary, the procedure RemovePrivateServices is called which uses the faulty code from WriteRODLtoStream.
I fixed the WriteRODLtoStream with the following code:
procedure WriteRODLtoStream(aLibrary: TRODLLibrary; aStream: TStream; aRemovePrivateServices: Boolean);
lRODLToXML := TRODLToXML.Create(nil,True);
lRODLToXML.ExcludePrivateServices := aRemovePrivateServices;
//AAN Start Changes
//AAN Buffer := StringToAnsiBytes(lRODLToXML.Buffer.Text);
Buffer := StringToUTF8Bytes(lRODLToXML.Buffer.Text);
Buffer := StringToAnsiBytes(lRODLToXML.Buffer.Text);
//AAN End Changes
if Length(Buffer) > 0 then
With that code fixed I was able to load the RODL. Unfortunately the next problem arised, the wsdl can not be generated because of similar issues.
I do not have time to debug all possible sources of bad code generation.
Generally you are generating XML without using any XMLDocument (MSXML or similar). Handcrafted xml generation is in my opinion not a good practice to generate XML.
Another observation is that the RODL and MSDL are not being cached. It would be nice to have it cached to provide better performance.