使Camel-xslt组件使用xml目录来解析DTD



我们使用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。