Ich habe einen untergeordneten Prozess in node.js erstellt und gab es eine ausführbare JAR-Datei Speicherort.Verbunden node.js mit Java-Anwendung und wollen in html Ausgabe
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;
Dies ist meine Saxon.java, die ich in JAR-Datei umgewandelt habe. Wie Sie sehen können, nimmt dieses Java-Programm die Stylesheets result1.xml und defaultfrontend.xslt und konvertiert sie in eine HTML-Webseite (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");
}
}
Also dieses Programm konvertiert Xml in HTML mit Xslt Stylesheet. Ich möchte meine Ausgabe (in html) in node.js bekommen.
Aber wenn ich versuche, mein Javascript zu laufen, bekomme ich keine Ausgabe. Die Ausgabe sieht wie folgt aus: http://i.stack.imgur.com/S0xg0.png
gibt es einen Fehler? kannst du versuchen stderr zu drucken? –
Es gibt mir keinen Fehler. Wenn ich zu output.html gehe, bekomme ich eine 0 (Null). – Rose
Ein kleiner Kommentar zur Leistung: Die Initialisierung einer Java-VM für eine einzelne Umwandlung ist ein ziemlich hoher Aufwand. Aber es ist nicht nötig, es zu verschlimmern, indem Sie die JAXP-Lade-Methode verwenden, um eine TransformerFactory zu erstellen, wenn Sie bereits wissen, dass Sie Saxon verwenden möchten. Instanziieren Sie Saxon direkt, indem Sie 'TransformerFactory.newInstance()' durch 'new net.sf.saxon.TransformerFactoryImpl()' ersetzen. –