gpt4 book ai didi

java - JAXP XSLT document()函数问题

转载 作者:数据小太阳 更新时间:2023-10-29 01:57:38 26 4
gpt4 key购买 nike

我在使用 XSLT 转换的 Java 应用程序下工作。我在其中有很多 document() 调用,所以可能有 java.lang.OutOfMemory 异常(我实际上有),因为在每次调用 document() 函数后,文档都会被缓存。

http://xml.apache.org/xalan-j/faq.html#faq-N102F9我读到有可能增加堆内存大小,这不是我的解决方案。我还尝试使用似乎不受支持的增量转换。

那么,在使用 document() 函数时是否可以关闭 jaxp 中的文档缓存?

最佳答案

喜欢user1066037的回答,希望你可以切换到Saxon。 Saxon 有一个名为 saxon:discard-document 的扩展。它在 PE 或 EE 版本或 Saxon-B 中可用。在此处搜索“Saxon-B”:http://saxon.sourceforge.net/

来自 Saxon 文档:

saxon:discard-document()

saxon:discard-document($doc as document-node()) ==> document-node()

This function removes a document from Saxon's internal document pool. The document remains in memory for the time being, but will be released from memory by the Java garbage collector when all references to nodes in the document tree have gone out of scope. This has the benefit of releasing memory, but the drawback is that if the same document is loaded again during the same transformation, it will be reparsed from the source text, and different node identifiers will be allocated. The function returns the document node that was supplied as an argument, allowing it to be used in a call such as select="saxon:discard-document(document('a.xml'))".

如果您需要如何使用 saxon:discard-document 的示例,请告诉我,我可以发布一个。

关于java - JAXP XSLT document()函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com