2014-11-14 2 views
1

есть ли способ отключить проверку DTD в трансформаторе XSLT через конфигурацию XML?SpringIntegration - отключить проверку DTD

У меня есть конкретный ответ от клиента, что я не хочу, чтобы проверить (по коммерческим причинам)

Могу ли я сделать это весной интеграции?

Спасибо заранее,

Карл

ответ

0

Я нашел это решение:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
// stop the network loading of DTD files 
factory.setValidating(false); 
factory.setNamespaceAware(true); 
factory.setFeature("http://xml.org/sax/features/namespaces", false); 
factory.setFeature("http://xml.org/sax/features/validation", false); 
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); 
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); 

(см здесь TransformerFactory - avoiding network lookups to verify DTDs)

Поскольку мы знаем, что <int-xml:xslt-transformer> поддерживает source-factory и result-factory, там будет просто нужно предоставить для них свою onw-реализацию, например основанные на существующем DomSourceFactory и DomResultFactory, и вводят этот код там в конструкторе.

Конечно, вы можете придать DocumentBuilderFactory к этому DomSourceFactory и DomResultFactory, но вы должны написать некоторые пользовательские FactoryBean<DocumentBuilderFactory> для инициализации DocumentBuilderFactory в getObject().

Смежные вопросы