Marc-

Just going through the archives looking for something else I stumbled
across this message:

http://marc.theaimsgroup.com/?l=castor-user&m=112792379518919&w=2

I'm not sure if it will work in your specific case, but it might be helpful.

Stephen


On 3/21/06, Marc Respass <[EMAIL PROTECTED]> wrote:
> On Mar 21, 2006, at 2:14 PM, Benoit Maisonny wrote:
>
> > I'm curious to know why you need to put the values in CDATA sections.
>
> So am I. I'm making an XML file that is sent to someone and that's
> what they require. When I asked why, they ignored me.
>
> > The serializer escapes anyway any character that need to be escaped
> > according to XML specs (if not, than the serializer is buggy). So,
> > I don't see a need to use CDATA at all.
>
> I couldn't agree more. Besides that, the data is all simple short
> values.
>
> > As far as I know, CDATA sections are only useful to humans, as we
> > don't like to have to escape characters manually. But maybe I miss
> > some weird use of CDATA.
>
> CDATA is sometimes useful and I've used it before but this is not a
> good use of CDATA. Frankly, I suspect the guys who are receiving this
> file are using String.indexOf() as their parser ;).
>
> However, one may desire enclosing a value in CDATA and it seems like
> something useful to have. I've found a number of questions about how
> to go about it and none of the answers are very easy. I was hoping
> there was something that I missed in Castor but it looks like writing
> my own serializer is the way.
>
> Marc
>
> > Benoit
> >
> >
> > Marc Respass wrote:
> >
> >> Thanks Stephen,
> >>
> >> I know I have looked at an XML serializer already but maybe I
> >> didn't look far enough. For the sake of the list archive, though,
> >> here is what I am doing now.
> >>
> >> // find the element
> >> // get its value into "val"
> >> CDATASection cdata = document.createCDATASection(val);
> >> if (cdata != null) {
> >> element.removeChild(child);
> >> element.appendChild(cdata);
> >> }
> >>
> >> Still feels like a hack to me but it is working and I need to move
> >> on. I'd like to have a generic solution, of course. This is a
> >> really specific solution so I'm going to continue to call it a hack.
> >>
> >> Thanks again
> >> Marc
> >>
> >> On Mar 21, 2006, at 1:12 PM, Stephen Bash wrote:
> >>
> >>> Marc-
> >>>
> >>> I don't know of a way to do achieve your goal in Castor, but that
> >>> doesn't mean one doesn't exist.
> >>>
> >>> Looking through the Marshaller class though, I feel like you really
> >>> want to be down at the XML serializer level. For example, when the
> >>> serializer receives a call to start element "foo" with attribute
> >>> "bar", just before it actually writes the output to a stream, you
> >>> intercept the value of bar and replace it with <![CDATA[value of
> >>> bar]]>. Anything higher up the chain I'm afraid will end up getting
> >>> escaped by the serializer. Sounds like a job for AspectJ if I ever
> >>> heard one :) Sorry I can't be of more help. Your post processing
> >>> might be the easiest way to go.
> >>>
> >>> Stephen
> >>>
> >>>
> >>> On 3/21/06, Marc Respass <[EMAIL PROTECTED]> wrote:
> >>>
> >>>> Hi all,
> >>>>
> >>>> I'm new to the list and just started using Castor. I'm impressed so
> >>>> far but I've run into a problem. The party who has defined the XML
> >>>> document demands that all values be wrapped in CDATA. Right now,
> >>>> I am
> >>>> marshalling the object with Castor and then hacking the document by
> >>>> calling getElementsByTagName(), pulling the value, creating a CDATA
> >>>> section, removing the element's child, and appending the new CDATA
> >>>> section. It would be cool if I could get the value wrapped in CDATA
> >>>> automatically during the marshalling. I tried writing a
> >>>> GeneralizedFieldHandler that would wrap the value like
> >>>>
> >>>> value = "<![CDATA[" + value + "]]>";
> >>>>
> >>>> but that is so wrong and the first "<" gets escaped. I've look
> >>>> around
> >>>> and tried lots of different things but I have been entirely
> >>>> unsuccessful. Can anyone point me in the right direction to do
> >>>> this?
> >>>> Is it possible or is my hack not really a hack so I should
> >>>> change my
> >>>> method name from hackDocument() to fixUpDocument()? :)
> >>>>
> >>>> Thanks a lot
> >>>> Marc
> >>>>
> >>>> -------------------------------------------------
> >>>> If you wish to unsubscribe from this list, please
> >>>> send an empty message to the following address:
> >>>>
> >>>> [EMAIL PROTECTED]
> >>>> -------------------------------------------------
> >>>>
> >>>>
> >>>
> >>
> >>
> >> -------------------------------------------------
> >> If you wish to unsubscribe from this list, please send an empty
> >> message to the following address:
> >>
> >> [EMAIL PROTECTED]
> >> -------------------------------------------------
> >
> >
> > --
> > Benoit Maisonny                [EMAIL PROTECTED]
> > Director & Consultant          http://synclude.com
> > Synclude
> >
> >
> > -------------------------------------------------
> > If you wish to unsubscribe from this list, please send an empty
> > message to the following address:
> >
> > [EMAIL PROTECTED]
> > -------------------------------------------------
> >
>
>
> -------------------------------------------------
> If you wish to unsubscribe from this list, please
> send an empty message to the following address:
>
> [EMAIL PROTECTED]
> -------------------------------------------------
>
>

Reply via email to