我想在java应用程序中使用XSLT转换我的XML文件。下面是我的代码,但它给classNot发现错误。我试图解决这个问题,但该方法没有在jdk 5之后使用。 您可以给我更好的方法来使用Java程序中的XSLT转换XML。 下面是我的代码:在Java程序中使用XSLT进行XML转换
import java.io.File;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
class Transform {
public static void main(String[] args) throws TransformerException {
String stylesheetPathname = "C:/abc.xml";
String inputPathname = "C:/scripts/transform.xslt";
String outputPathname = "C:/abc_transformed.xml";
TransformerFactory factory = TransformerFactory.newInstance();
Source stylesheetSource = new StreamSource(new File(stylesheetPathname).getAbsoluteFile());
Transformer transformer = factory.newTransformer(stylesheetSource);
Source inputSource = new StreamSource(new File(inputPathname).getAbsoluteFile());
Result outputResult = new StreamResult(new File(outputPathname).getAbsoluteFile());
transformer.transform(inputSource, outputResult);
}
}
错误:
Exception in thread "main" javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:107)
at Transform.main(Transform.java:18)
Caused by: java.lang.ClassNotFoundException:org.apache.xalan.processor.TransformerFactoryImpl
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at javax.xml.transform.FactoryFinder.getProviderClass(FactoryFinder.java:119)
at javax.xml.transform.FactoryFinder.newInstance(FactoryFinder.java:182)
at javax.xml.transform.FactoryFinder.findJarServiceProvider(FactoryFinder.java:364)
at javax.xml.transform.FactoryFinder.find(FactoryFinder.java:286)
at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:101
您正在使用哪个java版本? – tmarwen 2014-09-25 14:15:36
我正在使用jdk 1.7。 Java SE 7 – suraj08 2014-09-25 14:22:31
在java中使用xslt转换xml的任何其他选项也将完成我的工作。 – suraj08 2014-09-25 15:39:13