gpt4 book ai didi

java - 以编程方式在 Java/Android 中进行 Saxon XSLT 转换

转载 作者:行者123 更新时间:2023-11-30 04:00:13 24 4
gpt4 key购买 nike

您好,我想在我的 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 上工作的经验,我们很想听听他们的意见。

关于java - 以编程方式在 Java/Android 中进行 Saxon XSLT 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12620855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com