Saxon provides DOM wrappers for its internal and immutable data structure.
final Transformer transformer = new TransformerFactoryImpl().newTransformer();
final TinyBuilder outputTarget = new TinyBuilder(
new PipelineConfiguration(new Configuration()));
transformer.transform(xml, outputTarget);
final TinyNodeImpl tinyNode = outputTarget.getTree().getNode(0);
final NodeOverNodeInfo nodeOverNodeInfo = DocumentOverNodeInfo.wrap(tinyNode);
final Document doc = (Document) nodeOverNodeInfo;
(verified using Saxon-on 9.5.1)