Sunday, 9 May 2010

Serializing XML

I am trying to output an XML Document (org.w3c.doc.Document) from Java. I always forget how to do this, somehow it doesn't work with the way I think. So I googled and found this code:

TransformerFactory factory =
TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);

But this gave me a NullPointerException down in the org.apache.xml.utils.TreeWalker.
Huh? I seemed to recall that there was a better way to do this than calling a dummy xsl transform, which is what the above code does.
A bit more searching and I found the method I've used previously:

XMLSerializer serializer = new XMLSerializer();
serializer.setOutputByteStream(System.out);
serializer.serialize(doc);

And that works fine. It seems there is a bug in the tree walker class triggered when text nodes are empty. Not much detail but I found it here.
Post a Comment