Hi Francois,

That will work, but you can actually get the equivalent effect without 
needing to modify the supplied code.

The IUnmarshallingContext and IMarshallingContext setup calls are all 
modular, and the JavaDocs spell out the effects of the different calls 
to point you in the direction of doing your own compositions. So the 
three-argument marshalDocument() call, for instance, says:

/Marshal document from root object. This can only be validly called 
immediately following one of the set output methods; otherwise the 
output document will be corrupt. The effect of this method is the same 
as the sequence of a call to startDocument(java.lang.String, 
java.lang.Boolean), a call to marshal the root object using this 
context, and finally a call to endDocument()./

This doesn't spell it out, but what do you suppose would happen if 
rather than calling this method you instead called startDocument(), 
followed by multiple calls to marshal objects, followed by the 
endDocument() call? The result wouldn't be valid XML (since you'd have 
more than one root element in the "document"), but it would be what you 
want.

One thing that's not spelled out in the interface is how you actually 
marshal an object directly. This is really simple, though. Any class 
with a concrete mapping gets the IMarshallable interface added by the 
binding compiler. You just need to cast your instance object to this 
interface and use that for the marshalling call.

But once you have your output with the multiple XML documents 
concatenated together you're going to have a problem reading it back in, 
since the unmarshalling side expects to work with individual documents 
(and since the parsers enforce this requirement, it's not something that 
can be changed by the unmarshalling code). What are you doing for this?

  - Dennis

Dennis M. Sosnoski
SOA and Web Services in Java
Training and Consulting
http://www.sosnoski.com - http://www.sosnoski.co.nz
Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117



Francois Valdy wrote:
> I'm doing so with a little trick:
> instead of a GenericXMLWriter (for instance), use the following:
>
> GenericXMLWriter writer = new GenericXMLWriter(namespaces){
>                 @Override
>                 public void close() throws IOException
>                 {
>                     // no close
>                 }
>             };
>
> Then you'll be able to call several times mctx.marshalDocument(...) in
> a loop, thus marshalling all your objects to the same stream.
>
> I'm not sure this behavior is intented to be used, but it's a huge
> performance gain too (re-use the same context).
>
> Cheers,
> Francois.
>
> On 9/26/07, Dan Shuhler <[EMAIL PROTECTED]> wrote:
>   
>> Hi,
>>
>> Is it possible to use JiBX to marshal more than one object into a single XML
>> file?  I have a large quantity of objects I need to marshal.  Currently, I
>> am putting them all into a container object and marshalling that, but
>> loading so many objects at once puts a heavy strain on the system.  I would
>> prefer to load an object, marshal that data, load the next object, marshal
>> that data, etc.
>>
>> I have not been able to find a way to marshal an object without have an XML
>> header printed at the top and my output stream being closed.  Is there
>> something I am missing?  Or is JiBX not intended for this?
>>
>> Thanks for your help,
>> Dan
>>
>> ________________________________
>> Pinpoint customers who are looking for what you sell.
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2005.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> jibx-users mailing list
>> jibx-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/jibx-users
>>
>>
>>     
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> jibx-users mailing list
> jibx-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jibx-users
>
>   


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to