XSLT-преобразование в памяти с использованием C # - PullRequest
3 голосов
/ 01 ноября 2011

Добрый день всем,

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

Я пытаюсь выполнить 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 Ответ

7 голосов
/ 01 ноября 2011
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).

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