Hi Leif,

The change I made to XMLWriterBase does work for both OutputStreams and Writers. I'm not sure if it'll work for you completely, since you're kind of stretching the limits of with JiBX is designed to support.

I don't think I want to add the raw access methods into the standard support, since they wouldn't really be usable with any form of output other than text (JDOM, DOM, StAX, etc.). I'm implementing StAX input and output support for 1.1, and don't want to knowingly add things that will make this more difficult. I'd think you should still be able to do what you want by subclassing the provided writers, though.

 - Dennis

Leif Stainsby wrote:

Hi,

The getOutputStream() method only worked for writer's based on
StreamWriterBase -- this did not account for the GenericXMLWriter which,
heh, uses a Writer and thus does not output to a _stream_.  So, here's a
revised take on the idea being able to output XML content directly to a
writer.

 * Created IRawXMLWriter interface to expose direct write methods;
added it to XMLWriterNamespaceBase which also implements IXMLWriter. * added implementations to GenericXMLWriter and StreamWriterBase.
It works for my limited use case - my custom marshaller is able to emit
pre-serialized XML content directly into another documents stream.  It
also shields existing users of the IXMLWriter interface from anything to
do with this change.

Here's a simple example of what it would look like (assume 'xml' has
been previously populated): IXMLWriter writer = ctx.getXmlWriter();
  IRawXMLWriter rawWriter = (IRawXMLWriter)writer;
rawWriter.writeRawMarkup(xml);
Other code snippets below. It ain't pretty, but it can be very useful.
Any questions, queries, or comments?  Is this worthy of inclusion into
JiBX?

...Leif


---------[ IRawXMLWriter ]----------

public interface IRawXMLWriter
{
 /**
  * Write previously serialized XML content directly to output
  * without any escaping.  It is assumed that the character XML
  * content has already been escaped.
* * Output encoding may still occur, depending on the underlying * implementation (i.e. only if output is stream based). *
  * @param xml  XML content in java.lang.String form.
  * @throws IOException on error writing to document
  */
 public void writeRawMarkup(String xml) throws IOException;

 /**
* Write a single character to the output. Since no escaping * will be performed, this method should be used with extreme * care. * * @param ch A single character to write to the XML document.
  * @throws IOException on error writing to document
  */
 public void writeRawMarkup(char ch) throws IOException;
}

---------[ StreamWriterBase methods from IRawXMLWriter ]----------

   public void writeRawMarkup(String xml) throws IOException {
     // we flush first to be sure no writes are pending from
     // this classes internal buffer...
     flush();
     m_stream.write(xml.getBytes());
   }
   public void writeRawMarkup(char ch) throws IOException {
     // we flush first to be sure no writes are pending from
     // this classes internal buffer...
     flush();
     m_stream.write(ch);
   }

---------[ GenericXMLWriter methods from IRawXMLWriter ]----------

   public void writeRawMarkup(String xml) throws IOException {
     writeMarkup(xml);
   }
   public void writeRawMarkup(char ch) throws IOException {
     writeMarkup(ch);
   }

---------[ end ]----------



-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users



-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to