我目前有一个包含以下行的批处理文件:
"C:\Program Files (x86)\Java\jre7\bin\java" -Xmx1224m -classpath .\xalan.jar
org.apache.xalan.xslt.Process -IN FileIn.xml -XSL FileConvert.xslt -OUT FileOut.xml
它需要给定的 xml
和给定的 xslt
并输出一个新的、转换后的 xml
。该批处理运行得很好,但我正在尝试将其转换为 C#,以便我可以围绕它构建一个应用程序,并能够更改一些参数,例如要选择的输入文件。
我的代码是这样的,
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd",
"/k " + "\"C:\\Program Files (x86)\\Java\\jre7\\bin\\java\" -Xmx1224m -classpath .\xalan.jar org.apache.xalan.xslt.Process -IN In.xml -XSL Convert.xslt -OUT Out.xml");
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
认为它会像一个简单的 CMD
命令一样运行。当我这样做时,我只会收到一条消息,其中包含允许您使用的 Java 命令列表,然后它就会退出。我尝试了使用引号的一些变体,例如 @"C:\...
等等。
有什么想法吗?
最佳答案
试试下面的方法,会对你有帮助...
string commandLine = "-Xmx1224m -classpath .\xalan.jar org.apache.xalan.xslt.Process -IN In.xml -XSL Convert.xslt -OUT Out.xml";
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(commandLine);
procStartInfo.WorkingDirectory = @"C:\Program Files (x86)\Java\jre7\bin\java";
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
Console.WriteLine(result);
关于c# - 使用 java 命令将 xml 批处理转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15973264/