Как настроить java.xml.transform.Transformer в Spring Framework? Мне нужен экземпляр трансформатора для преобразования xml в текст через xslt. Поэтому очень важно, чтобы сконфигурированный трансформатор должен был знать таблицу стилей xslt. Я не использую это в веб-проекте, но я использую это в автономной программе java.Как настроить java.xml.transform.transformer весной
ответ
Вам необходимо получить экземпляр Transformer
из соответствующего TransformerFactory
. Вы можете использовать встроенную фабрику трансформаторов xerces или сторонний XSLT-процессор, например saxonica.
Использование в Spring IoC можно настроить Xerces XML трансформатор, как это:
<bean id="transformerFactory" class="org.apache.xerces.jaxp.SAXParserFactoryImpl" />
или сакс XML трансформатор, как это:
<bean id="transformerFactory" class="net.sf.saxon.TransformerFactoryImpl" />
После того, как у вас есть TransformerFactory вы можете использовать инъекции зависимостей для получить новый экземпляр трансформатора либо внутри вашего компонента, либо с помощью IoC. Переключение быть внутри вашего класса вы можете иметь некоторые свойства, скажем transFact
, что вам нужно установить:
<bean id="myBean" class="myClass">
<property name="transFact" ref="transformerFactory" />
</bean>
Тогда в классе:
public class myClass {
// ...
private javax.xml.transformer.TransformerFactory transFact;
public void myMethod(){
StreamSource transformerStream = new StreamSource(getResourceAsStream(pathToXslt));
javax.xml.transformer.Transformer myTrans = transFact.newTransformer(transformerStream);
// now you've got a myTrans
}
// ...
public setTransFact(javax.xml.transformer.TransformerFactory transFact){
this.transFact = transFact;
}
}
В качестве альтернативы вы можете получить новый трансформатор в IoC с помощью factory-method
с немного больше усилий.
Ну, Java, чтобы настроить трансформатор, как это:
Source stylesheetSource = new StreamSource(new File("/path/to/my/stylesheet.xslt"));
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(stylesheetSource);
Если вы действительно хотите сделать это чисто в Spring XML, это эквивалентно:
<bean id="stylesheetSource" class="javax.xml.transform.stream.StreamSource">
<property name="systemId" value="/path/to/my/stylesheet.xslt"/>
</bean>
<bean id="transformerFactory" class="javax.xml.transform.TransformerFactory" factory-method="newInstance"/>
<bean id="transformer" factory-bean="transformerFactory" factory-method="newTransformer">
<constructor-arg ref="stylesheetSource"/>
</bean>
Спасибо за ответ. Мне было интересно, почему весна не может обеспечить немного больше поддержки, так что все, что мне нужно сделать, это передать имя моего xslt, и он должен найти его на пути к классам и построить конфигурацию трансформатора. Кроме того, я считаю, что мне, возможно, потребуется установить некоторые свойства на трансформаторе. – Jimm
Забыл в medion scope = prototype – alexsmail
Это старый, но я должен дать людям некоторые советы, возможно, просто не делать этого. Так как bean-компоненты по умолчанию весны, даже если вы создаете прототипы transformerfactory и transformer, для другого разработчика будет очень просто ввести его в одноэлементный компонент и не понимать, что они только что создали проблему безопасности потоков. Вместо этого я бы создал вспомогательный класс, который обертывает эти детали реализации, чтобы сделать его намного сложнее ошибиться. – jjathman
Я нашел это способ обеспечить xsl
файл из: путь к классам
<bean id="errorLogTransformer" factory-bean="transformerFactory" factory-method="newTransformer" >
<constructor-arg>
<bean class="org.springframework.xml.transform.ResourceSource">
<constructor-arg>
<value>classpath:errorLog.xsl</value>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
Довольно уродливый, но это работает !
- 1. как настроить autowire весной
- 2. Как настроить контекст приложения весной?
- 3. Как настроить парсер Spel весной?
- 4. Как настроить источник данных весной?
- 5. Как настроить среду весной загрузки
- 6. Как настроить Spring 4.0 с весной и весной безопасности openId
- 7. Проблемы с JDK 1.8 и java.xml.transform.Transformer
- 8. настроить registerController весной безопасности UI
- 9. Как настроить шаблон отдыха весной MVC 4?
- 10. Как настроить весовой класс Scala весной?
- 11. Как настроить ответное сообщение весной webservice PayloadValidatingInterceptor?
- 12. Как настроить многие DispatcherServlet весной 3 mvc?
- 13. Как настроить портлет Liferay (весной) с Hibernate?
- 14. Как настроить поставщика услуг OAuth весной?
- 15. Как настроить SSL над базой данных весной?
- 16. Как настроить shutdownHook для времени выполнения весной
- 17. Как настроить загрузку диспетчераServlet при запуске весной?
- 18. Как настроить querydsl весной загрузки 1.4.1?
- 19. Как настроить jax-ws Обработчик весной?
- 20. Как настроить подпружиненный весной tc-сервер?
- 21. Как настроить модель одного потока весной MVC?
- 22. Как настроить тег mvc-resources весной?
- 23. Как настроить несколько источников данных весной
- 24. настроить спящий режим с весной
- 25. Настроить аутентификацию JDBC весной загрузки
- 26. Настроить класс внедрения абстрактной фабрики с весной
- 27. настроить свойство на основе условия весной xml?
- 28. настроить бобы весной загрузки MVC тест
- 29. настроить сообщение о неисправности мыла весной интеграции
- 30. Настроить транзакцию весной 4.1.5 без XML
Вы имеете в виду 'javax.xml.transform.Transformer', не так ли? –