[英]Programmatically Saxon XSLT Transformation in Java/Android
嗨,我想在我的Android应用程序中使用xsl样式表以编程方式转换xml。
这是我的转换器功能:
//-----------------------------XLST SAXON TRANSFORMATION--------------------
public static void simpleTransform(String sourcePath, String xsltPath,
String resultDir) {
TransformerFactory tFactory = TransformerFactory.newInstance();
try {
Transformer transformer =
tFactory.newTransformer(new StreamSource(new File(xsltPath)));
transformer.transform(new StreamSource(new File(sourcePath)),
new StreamResult(new File(resultDir)));
} catch (Exception e) {
e.printStackTrace();
}
}
并用他的代码开始转换:
private static String sourcePath;
private static String xsltPath = SD_CARD_PATH +"/"+ "ets4_calimero_gui.xsl";
private static String resultDir;
sourcePath = SD_CARD_PATH + "/"+Name+".xml";
resultDir = SD_CARD_PATH + "/"+Name+"_xlst.xml";
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
simpleTransform(sourcePath, xsltPath, resultDir);
Log.d("XLST","XML saved as" + resultDir);
但是创建的.xml文件为空,logcat引发以下错误:
09-27 13:44:41.940: W/System.err(7736): (Location of error unknown)java.io.IOException: Couldn't open file:///mnt/sdcard/rg.xml
但是rg.xml存在,我可以在外部SD卡上看到它。 我还添加了saxon.jar作为类路径,并将其插入到libs文件夹中。
有人知道为什么转换不起作用吗?
您提到“ saxon.jar”,这似乎使您似乎正在运行的是旧版本(也许是6.5?)。 您可能想尝试一些新的东西。 但是,未在Android上测试或支持Saxon。 我们知道有问题,但是我们没有做任何认真的工作来找出它们是什么,以及是否有一个简单的解决方法(该代码无法为Android编译,因为它依赖于Android平台上不存在的功能,而我们要做的第一件事就是摆脱这些依赖。)
如果任何人有让Saxon在Android上运行的经验,我们都希望听到有关它们的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.