こんにちは、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 フォルダーに挿入しました。
トランスフォーメーションが機能しない理由を知っている人はいますか?