我们使用camel xslt 组件来转换一个xhtml 文件。但是为了转换文件,使用的 XMLReader 从 w3c 网站下载 xhtml dtd。
是否有可能告诉 xslt 组件将 xml 阅读器配置为使用本地版本(例如,通过使用 xml 目录)?
我们使用camel xslt 组件来转换一个xhtml 文件。但是为了转换文件,使用的 XMLReader 从 w3c 网站下载 xhtml dtd。
是否有可能告诉 xslt 组件将 xml 阅读器配置为使用本地版本(例如,通过使用 xml 目录)?
我找到了一种使用处理器的方法,该方法使用 CatalogResolver 创建 XMLReader 并将使用此 xmlReader 的 SAXSource 放入交换中。
@Override
public void process(Exchange exchange) throws Exception {
InputStream inputStream = exchange.getIn().getBody(InputStream.class);
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setEntityResolver(new CatalogResolver());
exchange.getIn().setBody(new SAXSource(xmlReader, new InputSource(inputStream)));
}
然后 xsltComponent 使用的 Transformer 将使用这个 xmlReader。