[jdom-interest] streaming document output

Patrick Dowler patrick.dowler at nrc-cnrc.gc.ca
Thu Apr 11 10:29:55 PDT 2013


We have a few web services that send XML documents in the response. The 
documents can be large and when they are there is always one spot where 
there is an arbitrarily long list of child elements.

With jdom1 we had implemented a subclass of Element for the element with 
the long list of child elements and then had the iterator over that list 
dynamically generate the children. Since the XMLOutputter used indexed 
access rather than the iterator, we also had to subclass it and override 
the list access. That works fine at the time.

No we are porting to jdom2 and I see that the outputter still uses 
indexed access; that is a shame given all the comments in the code about 
how the iterator is generally better than having to call size() on the 
lists. It would be really nice and enable people to implement 
customisations if jdom2 used the iterators rather than the indexing 
throughout the codebase. Is that a lot of work?

The further problem we have right now is that XMLOutputter is final so 
we can't trivially port our jdom1 code. Is implementing a custom 
XMLOutputProcessor the right place to do that? The change we'd be making 
is to change it to use iterators... is that something that should go 
into the core library?

For XMLOutputProcessor, I am looking specifically at these methods:

process(Writer,Format,Element)
process(Writer,Format,List)

Is that the place to change to iterators?


-- 

Patrick Dowler
Canadian Astronomy Data Centre
National Research Council Canada
5071 West Saanich Road
Victoria, BC V9A 2L9

250-363-0044 (office) 250-363-0045 (fax)


More information about the jdom-interest mailing list