Java/Android中的编程Saxon XSLT转换

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

大家好,我想在我的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?)。你可能想试试最近的东西。但是,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中产生的问题