I'm curious to know why you need to put the values in CDATA sections.
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. 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.
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]
-------------------------------------------------