Java 使用Springbeans调用xsl时在类路径上引用XSD
因此,我目前正在从事一个项目,该项目在调用xsl时使用Spring为xsd注入模式位置,类似于:Java 使用Springbeans调用xsl时在类路径上引用XSD,java,spring,xsd,xslt-1.0,Java,Spring,Xsd,Xslt 1.0,因此,我目前正在从事一个项目,该项目在调用xsl时使用Spring为xsd注入模式位置,类似于: <bean id="transformer" class="com.mypackage.Transformer"> <property name="xsl" value="sample.xsl" /> <property name="params"> <map>
<bean id="transformer" class="com.mypackage.Transformer">
<property name="xsl" value="sample.xsl" />
<property name="params">
<map>
<entry key="schemaLocation" value-ref="schema" />
</map>
</property>
</bean>
<bean id="schema" class="java.lang.String">
<constructor-arg value="http://www.sample.com/schema/sampleSchema.xsd" />
</bean>
当您使用url作为模式位置时,这可以很好地工作,但是例如,假设您希望引用在类路径上作为maven依赖项引入的模式。我发现使用类似“classpath:sampleSchema.xsd”的东西是行不通的。我认为这种行为相当普遍,有没有公认的解决办法?创建一个自定义类,该类在类路径上查找模式,并以字符串形式返回其路径?好的,所以我想分享一下我是如何解决这个问题的 两颗春豆:
<bean id="schema" factory-method="getSchemaLocation" factory-bean="schemaFinder" />
<bean id="schemaFinder" class="com.mypackage.SchemaFinder">
<constructor-arg value="NAME_OF_SCHEMA" />
</bean>
想起来很容易
public class SchemaFinder
{
private String schemaLocation;
public SchemaFinder(String schemaName) throws Exception
{
try
{
URL absoluteSchemaUrl = getClass().getClassLoader().getResource(schemaName);
setSchemaLocation(absoluteSchemaUrl.toString());
}
catch (Exception e)
{
//whatever you want here
}
}
public void setSchemaLocation(String schemaLocation)
{
this.schemaLocation = schemaLocation;
}
public String getSchemaLocation()
{
return this.schemaLocation;
}
}