将一批带有java命令的xml转换为c#

本文关键字:命令 xml 转换 java 一批 | 更新日期: 2023-09-27 18:08:45

我目前有这样一行的批处理文件:

"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:'...等等。

任何想法?

将一批带有java命令的xml转换为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);