Я создал дочерний процесс в node.js и дал ему расположение исполняемого файла jar.
var fs = require('fs');
var exec = require('child_process').exec;
var child = exec('java -jar C:/Users/njaiswal/Desktop/Executable/Saxon.jar',
function (error, stdout, stderr){
fs.writeFile('output.html', +stdout);
if(error !== null){
console.log("Error -> "+error);
}
});
module.exports = child;
Это мой Saxon.java, который я преобразовал в файл jar. Как видите, эта java-программа принимает файл result1.xml и таблицу стилей defaultfrontend.xslt и конвертирует их в веб-страницу html (output.html).
import java.io.File;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class Saxon {
/**
* Simple transformation method.
*
* @param sourcePath
* - Absolute path to source xml file.
* @param xsltPath
* - Absolute path to xslt file.
* @param resultDir
* - Directory where you want to put resulting files.
*/
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();
}
}
public static void main(String[] args) {
// Set saxon as transformer.
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
simpleTransform("result1.xml", "defaultfrontend.xslt", "output.html");
}
}
Итак, эта программа конвертирует xml в html с помощью таблицы стилей xslt. Я хочу получить свой вывод (в html) в node.js.
Но когда я пытаюсь запустить свой javascript, я не получаю никаких результатов. Результат выглядит так: http://i.stack.imgur.com/S0xg0.png а>
TransformerFactory.newInstance()
наnew net.sf.saxon.TransformerFactoryImpl()
- person Michael Kay   schedule 03.05.2016