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 に答える