使用 S9API 序列化程序序列化 DOM 文档的惯用方法是什么

What is idiomatic way to serialize DOM document with S9API serializer

使用 Saxon S9API,将 DOM 文档序列化为输出流的惯用方法是什么?像

Serializer result = processor.newSerializer(out);
XdmNode source = processor.newDocumentBuilder().build(new DOMSource(doc));
result.serializeNode(source);

有效,但在 S9API 中是否有更正确的方法?

您不想执行 DocumentBuilder.build(),因为这会将整个 DOM 复制到使用默认树模型(通常是 TinyTree)的树中。相反,您可以使用 DocumentBuilder.wrap()(提供 DOM 文档节点),它只是创建一个 XdmNode 作为 DOM 节点的包装器。

所以:

Serializer result = processor.newSerializer(out);
XdmNode source = processor.newDocumentBuilder().wrap(doc);
result.serializeNode(source);