James,

Thanks for the comments.  Unfortunately, however, your suggestion doesn't
seem to work.  It seems that the List that's returned ('content' in your
suggested code below) only contains one item: the CDATA section.  So it
still doesn't let me decompose that into the component <p> and <b> elements
that exist within the CDATA.  Maybe I'm doing something wrong, but that
seems to be the behavior.

Regards,

Terry

----- Original Message -----
From: "James Strachan" <[EMAIL PROTECTED]>
To: "Terry Steichen" <[EMAIL PROTECTED]>
Cc: "dom4j-user" <[EMAIL PROTECTED]>
Sent: Monday, July 08, 2002 5:32 AM
Subject: Re: Fw: [dom4j-user] Parsing CDATA


> From: "Terry Steichen" <[EMAIL PROTECTED]>
> > Bob,
> >
> > I did end up doing something like your suggestion.  It seems pretty
hokey
> > (not your suggestion - what I did) to me, but -- it does work.
> >
> > What I did was extract the body text and then did two substring
operations
> > to remove the '<![CDATA[' and ']]'.  Then I enclosed the resultant
string
> > inside a root tag ('<doc>mystring</doc>') and parsed that.
> >
> > As I said, I'm not really happy with this hack, but it lets me move
ahead.
> > Any suggestions on a more elegant solution would be much appreciated.
>
> I'm still not quite sure what you really want to do. You should not need
to
> parse text or do substring operations. The dom4j Element will contain a
tree
> of Node implementations which in your case will probably be a mixture of
> Element, Text and CDATA nodes. So you should just be able to use regular
> Java 2 Collections code and use 'instanceof' to determine which nodes you
> want to process and which you don't.
>
> When you say...
>
> > What I want to do is parse the contents of "body" into the component
> paragraph, highlighted text and regular text parts
>
> you could just iterate over the contents of <body> and process things
> however you wish...
>
> Element body = (Element) doc.selectSingleNode( "/doc/body" );
> List content = body.content();
> for (Iterator iter = content.iterator(); iter.hasNext(); ) {
>     Node child = (Node) iter.next();
>     if ( child instanceof Element ) {
>         ... process this element, could be a <b> or <p> etc.
>     }
>     else if ( child instanceof Text ) {
>         .. its a block of text...
>     }
> }
>
> James
>
>
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
>



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Stuff, things, and much much more.
http://thinkgeek.com/sf
_______________________________________________
dom4j-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dom4j-user

Reply via email to