Java/Android中的编程Saxon XSLT转换
大家好,我想在我的Android应用程序中用xsl样式表以编程方式转换xml 这是我的变压器功能:Java/Android中的编程Saxon XSLT转换,java,android,xml,xslt,saxon,Java,Android,Xml,Xslt,Saxon,大家好,我想在我的Android应用程序中用xsl样式表以编程方式转换xml 这是我的变压器功能: //-----------------------------XLST SAXON TRANSFORMATION-------------------- public static void simpleTransform(String sourcePath, String xsltPath, String resultDir) { TransformerFacto
//-----------------------------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?)。你可能想试试最近的东西。但是,Saxon没有在Android上测试或支持;我们知道存在问题,但我们还没有做任何认真的工作来找出问题所在,以及是否有简单的解决办法(代码不会为Android编译,因为它依赖于Android平台上不存在的功能,我们必须做的第一件事是消除这些依赖。)
如果有人有任何让Saxon在Android上工作的经验,我们很想听听他们。您提到“Saxon.jar”,这让人觉得您可能运行的是一个相当旧的版本(可能是6.5?)。你可能想试试最近的东西。但是,Saxon没有在Android上测试或支持;我们知道存在问题,但我们还没有做任何认真的工作来找出问题所在,以及是否有简单的解决办法(代码不会为Android编译,因为它依赖于Android平台上不存在的功能,我们必须做的第一件事是消除这些依赖。)
如果有人有任何让Saxon在Android上工作的经验,我们很想听听他们的情况。Android使用轻量级XSLT解析器LibXML2和轻量级XSLT标准XSLT-version-1
对于复杂的XSLT脚本(作为XSLT2特定函数),请选中
hasExsltSupport()
,并使用和/或“注册函数”从XSLT脚本调用Java函数。Android使用轻量级XSLT解析器LibXML2和轻量级XSLT标准XSLT-version-1
对于复杂的XSLT脚本(作为XSLT2特定的函数),请选中
hasExsltSupport()
,并使用和/或“注册函数”从XSLT脚本调用Java函数。是的,我正在运行6.5.5,因为这对我的样式表很有用。我已经和你讨论过了。但目前我认为这也可能是我的道路上的问题,我正在一次又一次地查看我的项目。。。是新的线程,希望你能帮助我找到这个链接,这个链接描述了新的saxon9he.jar在Android中出现问题是的,我正在运行6.5.5,因为这对我的样式表很有用。我已经和你讨论过了。但目前我认为这也可能是我的道路上的问题,我正在一次又一次地查看我的项目。。。是新的线程,希望你能帮我找到这个链接,这个链接描述了新的saxon9he.jar在Android中产生的问题