将XML字符串作为参数传递给Process.Start

时间:2012-09-20 13:14:03

标签: c# cmd process.start

我在调用Process.Start时尝试使用包含XML作为参数的字符串,但只有第一个空格的字符才能通过。例如,如果Input.xml包含以下文本<?xml version="1.0" encoding="utf-8" ?>,我正在调用的所有应用程序都是"<?xml"

以下是将其置于上下文中的代码示例:

        XmlDocument xml = new XmlDocument();
        xml.Load("C:/Input.xml");
        Process proc = Process.Start("C:/Program.exe", xml.OuterXml);

有什么方法吗?

3 个答案:

答案 0 :(得分:2)

Process proc = Process.Start("C:/Program.exe", String.Concat("\"", xml.OuterXml,"\"");

即将参数包装在引号中。

与命令行中的xml参数无关,由空格分隔。

答案 1 :(得分:2)

尝试将XML数据作为命令行参数传递基本上是一个问题的处方。你会遇到遍布整个地方的问题,也可能是命令行长度限制。

从标准输入或文件名中读取。那时,它非常简单 - 文件通常比向stdin提供数据更简单,但两者都是可行的。

答案 2 :(得分:0)

传递参数时,应用标准规则,当字符串包含空格时,它会被分成多个参数。

你可以尝试:

 Process proc = Process.Start("C:/Program.exe", "\"" + xml.OuterXml + "\"");

但是你的xml也包含"个字符,然后再次中断。你可以做些什么,但是......这不值得努力。只需将文件名作为参数传递并在程序中加载xml(如果可以修改它)。