1

我试图在调用 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);

有没有办法解决?

4

3 回答 3

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

即将参数用引号括起来。

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

于 2012-09-20T13:20:46.237 回答
2

尝试将 XML 数据作为命令行参数传递基本上是一个问题的根源。您会在各处遇到转义问题,并且可能还会遇到命令行长度限制。

从标准输入或文件名读取。在这一点上,这很容易——文件通常比向标准输入提供数据更简单,但两者都是可行的。

于 2012-09-25T14:22:53.497 回答
0

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

你可以试试:

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

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

于 2012-09-20T13:20:05.237 回答