XSLT-преобразование в памяти с использованием C#

Всем доброго дня,

Я не знаю, почему это так сложно, но у меня, должно быть, один из тех дней!

Я пытаюсь выполнить и XslCompiledTransform для объекта в памяти XmlDocument (я получил XML из веб-службы и сохранен в базе данных) объекта. У меня есть следующий код:

        string xslFile = "C:\\MOJLogViewer\\GetClaimTransformed.xslt";

        XslCompiledTransform processor = new XslCompiledTransform();
        processor.Load(xslFile);

        MemoryStream ms = new MemoryStream();
        processor.Transform(xdoc.CreateNavigator(), null, ms);

        ms.Seek(0, SeekOrigin.Begin);

        StreamReader reader = new StreamReader(ms);

        XmlDocument transformedDoc = new XmlDocument();
        transformedDoc.Load(reader.ReadToEnd());


        string output = reader.ReadToEnd();
        ms.Close();

Когда я пытаюсь запустить этот код, я получаю исключение "недопустимые символы в пути". Путь не содержит каких-либо недопустимых символов, поэтому я абсолютно озадачен!

Я надеюсь, что вы можете помочь.

Спасибо

1 ответ

Решение
transformedDoc.Load(reader.ReadToEnd());

Load читает с пути; ты наверное хочешь transformedDoc.LoadXml(...), Но, честно говоря, вы могли бы просто написать все это StringWriter - более прямой:

string output;
using(var writer = new StringWriter())
{
    processor.Transform(xdoc.CreateNavigator(), null, writer);
    output = writer.ToString();
}

Плюс это будет работать для не-xml-выводов (xslt не обязан выводить xml).

Другие вопросы по тегам