Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用java命令将xml批处理转换为C_C#_Java_Xml_Cmd - Fatal编程技术网

C# 使用java命令将xml批处理转换为C

C# 使用java命令将xml批处理转换为C,c#,java,xml,cmd,C#,Java,Xml,Cmd,我当前有一个包含以下行的批处理文件: "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,以便围绕它构

我当前有一个包含以下行的批处理文件:

"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);

尝试下面的方法,它将帮助你

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);

为什么不改为用Java构建那个应用程序呢?我是从刚才创建它的其他人那里得到这个批的。他们已经不在了。我最熟悉C,这是我尝试的唯一原因。如果你有批处理文件。。。那你为什么不把这个批处理文件叫做C…?我已经考虑过了。我希望能够更改它接收的文件以及它吐出的文件的名称。我可以读取批处理,更改名称,或者只是创建字符串并将其写入批处理,然后运行它。。但如果我能在代码中做到这一点,这似乎是重复的,不是吗?也许这是最好的方法。批处理文件可以接受输入参数。看看你为什么不改为用Java来构建这个应用程序?我是从刚才创建它的其他人那里得到这个批的。他们已经不在了。我最熟悉C,这是我尝试的唯一原因。如果你有批处理文件。。。那你为什么不把这个批处理文件叫做C…?我已经考虑过了。我希望能够更改它接收的文件以及它吐出的文件的名称。我可以读取批处理,更改名称,或者只是创建字符串并将其写入批处理,然后运行它。。但如果我能在代码中做到这一点,这似乎是重复的,不是吗?也许这是最好的方法。批处理文件可以接受输入参数。看见