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).