Обработка имен файлов XSLT c # - PullRequest
0 голосов
/ 15 июля 2011

Хотите знать, как наилучшим образом справиться с проблемой, с которой я столкнулся в xsltransform. Короче говоря, все работает в моей тестовой среде, но происходит сбой, когда я запускаю его на сервере из-за имен файлов, с которыми он пытается работать, которые выводятся из другой программы, над которой у меня нет контроля.

Например. «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 \ Export \ done \ 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);
        }
    }

1 Ответ

0 голосов
/ 15 июля 2011

Каталог по умолчанию при запуске службы похож на «windows / system32», и это не каталог исполняемого файла.

Возможно, это причина того, что файл XML не найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...