xsltransformで問題が発生した場合の対処方法が分かりません。私のテスト環境ではすべてが機能しますが、別のプログラムから出力されるファイル名のためにサーバ上で実行するとクラッシュします。XSLTファイル名の処理C#
たとえば、 "4Copy(2)of Fed_Around_Six__TFVC020-12.mov.xml"という単純な方法で解決できますが、実際にはサービス上で実行されています。このサービスは、そのタイプのすべてのファイルをディレクトリに取得し、1つずつ処理します。
string[] filepaths = Directory.GetFiles(path, Filetype);
私は、ファイル名の変数を保つ:
FileInfo f = new FileInfo(filepaths[i]);
しかし、私は変換に使用する方法:それは「4Copy(2見たとき
myXslTransform = new XslCompiledTransform();
myXslTransform.Transform(filename,OutputFileName);
のみこれ(String, String)
を受け入れ、 )of Fed_Around_Six__TFVC020-12.mov.xml "それは心臓発作を起こし、それをカットします。
私は元の名前を保存し、名前を変更し、空白を削除し、変換し、名前を変更すると考えていました。しかし、私はそこにそれを処理するよりスマートな方法があると思う、ちょうどどこを見るかわからない。変数をリテラルとして扱うようにC#に指示する方法はありますか?あるいは、これらの奇妙なファイル名を非常に悪い命名規則で受け入れる別の変換方法ですか?
洞察力があれば助かります。
私はeventvwrとから受け取るエラー&例外メッセージが
である(2)Fed_Around_Six__TFVC020-12.mov.xml
OutputName = \\ 9g031の \\ 9g031 \輸出\ 4Copyを翻訳することはできません\ \ CXS.xsl
System.IO.IOException:指定されたパスが無効である輸出は\ \ 4Copy(2)Fed_Around_Six__TFVC020-12.mov.xml
のXSLのLOC = Cを行います。
private void PreformTranslation(FileInfo FileName, String OutputFileName , String result)
{
try
{
XslCompiledTransform myXslTransform;
myXslTransform = new XslCompiledTransform();
myXslTransform.Load(XSLname);
EventLog.WriteEntry(FileName.ToString(), OutputFileName);
myXslTransform.Transform(FileName.Name,OutputFileName);
EventLog.WriteEntry("TranslationComplete");
if (File.Exists(path + result))
{
MoveVideoFiles(path + result, outputPath + result);
}
// Rename(OutputFileName, FileName, Out);
}
catch (Exception e)
{
EventLog.WriteEntry("Cannot Translate " + FileName + " OutputName = " + OutputFileName + " \r\n"+
"XSL LOC = " + XSLname + "\r\n" + e);
}
}
放棄またはエラーが発生した場合は、投稿してください。 –
'' Fed_Around_Six__TFVC020-12.mov.xmlの "4Copy(2)" '_ _文字列であり、有効なファイル名です。例外は引数の型や '@'とは関係ありません。 「心臓発作がある」ということを正確に教えてください。 –
これはちょっと明白なようですが、 'XslCompiledTransform'のインスタンス化と変換の間に何かがあると思いますか?つまり、スタイルシートをその中にロードしますか?もしそうでなければ、それはあなたの問題かもしれないと思います。 – Flynn1179