[jdev] Re: Splitting the stream
Alexander Gnauck
gnauck at ag-software.de
Wed Nov 1 11:12:15 CST 2006
Matthias Wimmer wrote:
> Michal 'vorner' Vaner schrieb:
>> And, if I have these split things and insert them between the stream
>> header I got in the beginning and an corresponding stream end, can I
>> parse it using DOM parser for each separate stanza?
>
> But that is something I would not do. It requires you to parse the
> complete data twice. I'd just use a SAX parser for the complete stream.
> And with the SAX-events you can generate DOM-Nodes in a DOM-Document.
>
> E.g. you could have one document for the stream, generated inside the
> SAX-Events. When you notice, that a stanza has been completed, you can
> call the handler for the stanza with the handle/pointer/... to that
> element in the document. After the handler returned/the stanza has been
> processed, you can just remove that stanza root element from the DOM
> document again.
i agree with Matthias.
The technique you should use also depends on the programming language
and the XML libraries you use. From my experience "SAX like" techniques
works very well for XMPP streams.
==> Parsing the stream with Sax and build your Dom or stanzas from the
sax callbacks.
As Matthias already mentioned some developers see the complete stream
(including the header) as one XML Document, others use the header only
to grab the correct namespace and see each stanza as a new DOM which is
not in the context of the stream header.
All techniques have their pros and cons which also strongly depends on
your programming language and XML libraries.
It also depends on your project and requirements. It's a big difference
if you need a light and really fast implementation for a embedded
device, or if you don't care about speed but want a complete namespace
correct and validating implementation.
Alex
More information about the JDev
mailing list