Подумайте, как лучше всего справиться с проблемой, которую я испытываю с помощью xsltransform. Короче говоря, все работает в моей тестовой среде, но он сбой, когда я запускаю его на сервере из-за имен файлов, с которыми он пытается справиться, которые выводятся из другой программы, над которыми я не контролирую.Обработка имен файлов XSLT C#
Например. «4Copy (2) от Fed_Around_Six__TFVC020-12.mov.xml« простая @ »решила бы это, но фактически работает на службе, и эта служба получает все файлы этого типа в каталоге и обрабатывает их по одному.
string[] filepaths = Directory.GetFiles(path, Filetype);
Я держу переменное имя файла в:
FileInfo f = new FileInfo(filepaths[i]);
Но метод я использую для преобразования:
myXslTransform = new XslCompiledTransform();
myXslTransform.Transform(filename,OutputFileName);
только принимает (String, String)
и, таким образом, когда он видит «4Copy (2) от Fed_Around_Six__TFVC020-12.mov.xml «у него сердечный приступ и он его отключает.
Я думал, что сохранить исходное имя, переименовать, удалить пробелы, преобразовать и переименовать. Но я думаю, что есть более умный способ справиться с этим, просто не уверен, где искать. Есть ли способ сообщить C# обрабатывать переменную как литерал? Или другой метод преобразования, который принимает эти странные имена файлов с очень плохими соглашениями об именах?
Любое понимание, что будет полезно!
Исключение сообщение об ошибке & я получаю от Eventvwr является
не может перевести \\ 9g031 \ Export \ 4Copy (2) из Fed_Around_Six__TFVC020-12.mov.xml
OutputName = \\ 9g031 \ Экспорт \ сделано \ 4Copy (2) из Fed_Around_Six__TFVC020-12.mov.xml
XSL LOC = C: \ CXS.xsl
System.IO.IOException: указанный путь недопустим.
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);
}
}
Если вы получаете сообщение об ошибке или ошибке, отправьте его. –
'' 4Copy (2) от Fed_Around_Six__TFVC020-12.mov.xml "' _is_ a строка, а также действительное имя файла. Ваше исключение не имеет ничего общего с типами аргументов или '@'. Пожалуйста, скажите, что именно вы имеете в виду под «сердечным приступом». –
Это может показаться немного очевидным, но я полагаю, что существует нечто среднее между созданием «XslCompiledTransform» и выполнением преобразования? т. е. загружать в нее таблицу стилей? Если нет, я думаю, что это может быть вашей проблемой. – Flynn1179