I figured I should contribute SOMETHING to this list
that I've gotten so much out of. I hate googling for
a problem and finding an email list archive where the
person just says, "Nevermind, I've figured it out,"
without posting the solution. Jerks! :-)
To be honest, the solution I posted doesn't quite
work. The correct solution is this:
---
// same imports as previous message
public static final String XML_HEADER = "<?xml
version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
public static final void addXhtmlToNode(final
XMLObject page, final Node destNode, final String src)
throws IOException, SAXException
{
final StringBuilder xml = new
StringBuilder(XML_HEADER);
xml.append("<span>");
xml.append(src);
xml.append("</span>");
final DOMParser parser = new DOMParser();
parser.parse(new InputSource(new
ByteArrayInputStream(xml.toString().getBytes())));
final Document document = parser.getDocument();
final NodeList nodeList =
document.getFirstChild().getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++)
destNode.appendChild(page.importNode(nodeList.item(i),
true));
}
---
The differences:
1) Leave out the xhtml part of the header, because it
requires an <html> tag.
2) The <span> magic around the xhtml string. This
will allow for xhtml code that doesn't start with a
tag, like "This is some <b>bold</b> text". It worked
before for my unordered list because my xhtml code
started with a <ul> tag.
May your time be saved by this example!
Erik
P.S. What kind of idiot made the NodeList class that
doesn't implement any java.util collection interfaces?
Would an iterator() method have been so hard? I
mean, getLength() and item()???
--- Justin Akehurst <akehurst@xxxxxxxxx> wrote:
> Cool! Thanks for posting how to do this. :)
>
> -Justin
>
> On Sep 5, 2005, at 7:01 AM, Erik Rasmussen wrote:
>
> > Here's a solution I came up with:
> >
> > ---
> > import org.apache.xerces.parsers.DOMParser;
> > import org.enhydra.xml.xmlc.XMLObject;
> > import org.w3c.dom.Document;
> > import org.w3c.dom.Node;
> > import org.xml.sax.InputSource;
> > import org.xml.sax.SAXException;
> >
> > import java.io.ByteArrayInputStream;
> > import java.io.IOException;
> >
> > // ...
> >
> > public static final String XML_HEADER = "<?xml
> > version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" +
> > "<!DOCTYPE html PUBLIC \"-//W3C//DTD
> XHTML 1.0
> > Transitional//EN\"
> >
>
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
> >
> > public static final void addXhtmlToNode(final
> > XMLObject page, final Node destNode, final String
> src)
> > throws IOException, SAXException
> > {
> > final StringBuilder xml = new
> > StringBuilder(XML_HEADER);
> > xml.append(src);
> > final DOMParser parser = new DOMParser();
> > parser.parse(new InputSource(new
> > ByteArrayInputStream(xml.toString().getBytes())));
> > final Document document =
> parser.getDocument();
> >
> >
>
destNode.appendChild(page.importNode(document.getFirstChild(),
> > true));
> > }
> >
> > // ...
> > ---
> >
> > Works fine. As long as I validate all the xml
> going
> > into the database, the stuff coming out of it
> should
> > work here.
> >
> > Erik
> >
> >
> > --- Justin Akehurst <akehurst@xxxxxxxxx> wrote:
> >
> >
> >> Perhaps if you can find out how you can take a
> >> string of xhtml text
> >> and suck that into a DOM Document format, then
> you
> >> could probably do
> >> DOM import and import that chunk into your
> document
> >> somehow. Would
> >> probably make sense if your chunk in the database
> >> was a fully valid
> >> XHTML chunk, though.
> >>
> >> -Justin
> >>
> >> On Sep 4, 2005, at 5:24 PM, i_am_erik@xxxxxxxxx
> >> wrote:
> >>
> >>
> >>> Hello again. I have a field in my database that
> >>>
> >> allows xhtml, and
> >>
> >>> I want to be able to write this to the page.
> This
> >>>
> >> was
> >>
> >>> straightforward in jsp-land. But how do I do it
> >>>
> >> in xmlc-land?
> >>
> >>> Obviously, calling the setTextWhatever() method
> is
> >>>
> >> escaping all my
> >>
> >>> code. So I guess I need to construct a dom
> >>>
> >> structure from my
> >>
> >>> string value, and appendChild() that. But how?
> >>>
> >> I'm sure I could
> >>
> >>> dig into the depths of DocumentLoaderImpl.java
> and
> >>>
> >> Xerces figure it
> >>
> >>> out, but I thought I'd pose the question here
> >>>
> >> first. Surely this
> >>
> >>> has been done by some developer on this list.
> >>>
> >>> Cheers,
> >>> Erik
______________________________________________________
Click here to donate to the Hurricane Katrina relief effort.
http://store.yahoo.com/redcross-donate3/
--
You receive this message as a subscriber of the xmlc@xxxxxxxxxxxxx mailing list.
To unsubscribe: mailto:xmlc-unsubscribe@xxxxxxxxxxxxx
For general help: mailto:sympa@xxxxxxxxxxxxx?subject=help
ObjectWeb mailing lists service home page: http://www.objectweb.org/wws
|