Xml messaging in erlang question

bryan rasmussen <>
Fri Aug 25 09:59:46 CEST 2006


Hmm, I essentially just got told by someone with more power than me
that performance of this application supposed to be handling millions
of business messages is not a concern.

I feel relieved.

Cheers,
Bryan Rasmussen



On 8/24/06, Willem de Jong <> wrote:
> You would need
> 1. an http server module that accepts the HTTP post in chunks, and passes it on
> to the XML parser in chunks.
>
> 2. an XML parser that can work on chunks of data
>
> 3. the XML parser should probably be a SAX parser: one that generates
> events as it parses the XML document
>
> 4. the module that processes the SAX events should be able to discard the
> bits that you don't need.
>
> Like Joe says, it is not 100% clear whether you need 1 and 2 to avoid holding
> the XML document in memory while processing it.
>
> Looking at what is available:
> ad 1)
> It is not clear to me whether YAWS and/or Inets can deliver the post
> data in chunks.
>
> ad 2)
> I believe that Xmerl can work on chunks of data (using the
> 'continuation' function
> to get the next chunk)
>
> ad 3)
> xmerl and erlsom both offer a SAX API
>
> ad 4)
> erlsom could probably be used to discard the events that you don't need.
>
> You would have to write an XSD for the XML document (maybe it already exists).
> If you define the elements that you dont want as 'any' element, and you set
> the 'processContents' attribute to 'skip', then erlsom will discard
> these elements.
>
> Note that the additional benefit is that the XML document will be transformed to
> a structure of Erlang records (following the types as defined in the
> XSD). This is
> convenient for processing, and it takes much less space than a DOM
> representation.
>
> This is of course just a shameless attempt to draw some attention for erlsom
> (www.sourceforge.org/projects/erlsom), a nice tool that I have been writing
> that deserves some attention...
>
> Regards,
> Willem
>



More information about the erlang-questions mailing list