Java 大型xml的Xsl转换

Java 大型xml的Xsl转换,java,xml,xslt,sax,Java,Xml,Xslt,Sax,我知道如何使用 javax.xml.transform.Transformer 这种方法适用于小型XML数据。但当涉及到由于内存限制而难以使用基于DOM的方法的大型XML数据时,这将成为一场噩梦 我想知道将XSL转换应用于大型XML的最佳方法是什么。有没有在SAX而不是DOM上运行的转换器?Java中有不同的XSLT处理器实现,它们实现了JAXP。Saxon 9.3是一个XSLT 2.0处理器,它还实现了XSLT 3.0工作草案的一些流特性,请参阅。 即使您不使用最新的实验性Saxon 9.3特

我知道如何使用

javax.xml.transform.Transformer

这种方法适用于小型XML数据。但当涉及到由于内存限制而难以使用基于DOM的方法的大型XML数据时,这将成为一场噩梦


我想知道将XSL转换应用于大型XML的最佳方法是什么。有没有在SAX而不是DOM上运行的转换器?

Java中有不同的XSLT处理器实现,它们实现了JAXP。Saxon 9.3是一个XSLT 2.0处理器,它还实现了XSLT 3.0工作草案的一些流特性,请参阅。
即使您不使用最新的实验性Saxon 9.3特性,也最好不要向处理器提供DOMSource,而是让处理器通过提供StreamSource来使用自己的树实现

如果您使用的是大型XSLT和/或多个XSLT,那么编译和缓存XSLT是提高性能的一个很好的选择。本文解释了

如何找到一个好的解释,你可能想考虑把大XML分割成更小的块。