Dear Christian, I've no idea why DOM/LS still doesn't work, but with the SAXSerializer the problem is no more. When the SAXSerialier works query result can easily converted into any DOM using a simple ContentHandler implementation: /** * Constructs a DOM from SAX events. * Original idea by Florent Georges. */ public class SaxToDomHandler implements ContentHandler { private final DocumentBuilder documentBuilder; private Document document; private Node current; public SaxToDomHandler(DocumentBuilder documentBuilder) { this.documentBuilder = documentBuilder; } /** * Returns the created document. */ public Document getDocument() { return document; } @Override public void startDocument() throws SAXException { document = documentBuilder.newDocument(); current = document; } @Override public void startElement(String uri, String name, String qName, Attributes attrs) { Element element = document.createElementNS(uri, qName); for (int i = 0; i < attrs.getLength(); i++) { String nsURI = attrs.getURI(i); String qname = attrs.getQName(i); String value = attrs.getValue(i); Attr attr = document.createAttributeNS(nsURI, qname); attr.setValue(value); element.setAttributeNodeNS(attr); } current.appendChild(element); current = element; } @Override public void endElement(String uri, String name, String qName) { current = current.getParentNode(); } @Override public void endDocument() throws SAXException { current = current.getOwnerDocument(); } @Override public void characters(char[] ch, int start, int length) { String string = new String(ch, start, length); current.appendChild(document.createTextNode(string)); } @Override public void ignorableWhitespace(char[] ch, int start, int length) { characters(ch, start, length); } @Override public void processingInstruction(String target, String data) { current.appendChild(document .createProcessingInstruction(target, data)); } @Override public void setDocumentLocator(Locator locator) { //NOP } @Override public void startPrefixMapping(String prefix, String uri) throws SAXException { //NOP } @Override public void endPrefixMapping(String prefix) throws SAXException { //NOP } @Override public void skippedEntity(String name) throws SAXException { //NOP } }