Apache camel 使Camel xslt组件使用xml目录来解析dtd

Apache camel 使Camel xslt组件使用xml目录来解析dtd,apache-camel,Apache Camel,我们使用camel xslt组件来转换xhtml文件。 但是为了转换文件,使用过的XMLReader从w3c网站下载xhtml dtd 告诉xslt组件,是否可以将xml读取器配置为使用本地版本(例如,通过使用xml目录)?我找到了一种方法,使用处理器,使用CatalogResolver创建XMLReader,并将使用该XMLReader的SAXSource放入exchange @Override public void process(Exchange exchange) throws Exc

我们使用camel xslt组件来转换xhtml文件。 但是为了转换文件,使用过的XMLReader从w3c网站下载xhtml dtd


告诉xslt组件,是否可以将xml读取器配置为使用本地版本(例如,通过使用xml目录)?

我找到了一种方法,使用处理器,使用CatalogResolver创建XMLReader,并将使用该XMLReader的SAXSource放入exchange

@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使用的转换器将使用这个xmlReader

这里也讨论了这一点: