gpt4 book ai didi

java - TransformerFactory 上有多个 URIResolver?

转载 作者:行者123 更新时间:2023-12-01 16:11:28 26 4
gpt4 key购买 nike

我有一个 Java 中的 XSLT 转换器(实际上是它的 Apache FOP 渲染为 PDF),我已经在其中设置了一个自定义 URIResolver(用于“servlet-context:”URI)。

现在我需要另外使用另一个 URIResolver(用于缓存 DTD 的 CatalogResolver)。

我现在需要编写自己的 URIResolver 来调用两者中的任何一个吗?还是有更好的方法来做到这一点?

最佳答案

URIResolver 无法解析引用时,它应该返回 null。这允许底层解析器尝试。

如果您设计解析器,以便在构造时将另一个 URIResolver 作为参数,那么您可以使用解析器链接

TransformerFactory tf;
tf.setURIResolver(new SomeOtherResolver());
tf.setURIResolver(new MyResolver(tf.getURIResolver());

public class MyResolver implements URIResolver {
public MyResolver(URIResolver nextInLine) {
this.nextInLine = nextInLine;
}
private URIResolver nextInLine;
public Source resolve(String href, String base) throws TransformerException {
...try to solve and return Source object...
return nextInLine; // instead of returning null on failure, return nextInLine
}
}

另一种方法是编写一个解析器,它允许您将解析器链设置为列表,并继续调用它们,直到返回非null答案,然后返回该答案。

关于java - TransformerFactory 上有多个 URIResolver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068689/

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