I see that it works as a document that is a stream and streams tend to be long so I want to warn you that parsing the XML in REALbasic 5.5.5 is done in one instruction and then you have an object tree where every object contains a copy of the text that was parsed and that used so much memory that the XML document was limited to about 200 MB.
Interpreting that object tree is painful. It would be easier to derive a class MyXMLReader from XMLReader, place a dummy instruction like dim b as boolean in every event handler, and place a breakpoint at all those instructions. When you call Parse the debugger will stop in every event handler. That gives you the chance to look at the parameters. Then you can decide what your program will look like.
I found it fast and it does complete validation.
I'll look into your class for REALbasic 3.5.2.
If you have to wait until the complete XML file has been received before you can parse, then I recommend that you try this parsing in a separate program instead of an internet program. That will already be difficult enough to start with.
Alternatively, you can write your own parser in a C++ plugin, then you don't have to wait with parsing until the complete document is received and you control how much memory it uses.