You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Saxon XSLT库提取文本输出:现有方法是否最优?

Saxon s9api 文本输出优化方案
  • 你当前用String text = xdmValue.stream().map(XdmItem::getStringValue).collect(joining());提取文本的方式是可行的,但确实存在更直接的方法跳过节点封装的额外开销。
  • 当使用<xsl:output method="text"/>时,在s9api中可以直接将转换结果写入到OutputStream或Writer,无需先生成XdmValue。具体实现方式是调用Transformer的setDestination()方法,传入配置好的Serializer实例:
    // 示例:写入到StringWriter获取文本内容
    Processor processor = new Processor(false);
    XsltCompiler compiler = processor.newXsltCompiler();
    XsltExecutable executable = compiler.compile(new StreamSource(new File("your-transform.xsl")));
    XsltTransformer transformer = executable.load();
    transformer.setSource(new StreamSource(new File("your-input.xml")));
    
    StringWriter writer = new StringWriter();
    Serializer serializer = processor.newSerializer(writer);
    // 若需要指定编码等参数,可通过Serializer的setOutputProperty配置
    // serializer.setOutputProperty(Serializer.Property.ENCODING, "UTF-8");
    
    transformer.setDestination(serializer);
    transformer.transform();
    
    String text = writer.toString();
    
  • 这种方式直接让Saxon将文本输出写入目标流,避免了生成大量XdmNode的内存开销,效率更高,也更契合文本输出模式的设计初衷。

内容的提问来源于stack exchange,提问作者Garret Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:42:18