使用C#XSLT转换内存 [英] XSLT transformation in memory using C#
问题描述
下午好一切,
我不知道为什么这证明如此困难,但我必须有那些日子之一!
我试图执行和XslCompiledTransform上内存的XmlDocument(我已经检索的XML从一个web服务,并保存到数据库中)的对象。我有以下的code到目前为止:
字符串xslFile =C:\\ MOJLogViewer \\ GetClaimTransformed.xslt;
XslCompiledTransform处理器=新XslCompiledTransform();
processor.Load(xslFile);
MemoryStream的毫秒=新的MemoryStream();
processor.Transform(xdoc.CreateNavigator(),空,MS);
ms.Seek(0,SeekOrigin.Begin);
StreamReader的读者=新的StreamReader(MS);
XmlDocument的transformedDoc =新的XmlDocument();
transformedDoc.Load(reader.ReadToEnd());
字符串输出= reader.ReadToEnd();
ms.Close();
当我尝试运行此code,我得到异常的路径非法字符。该路径不包含任何非法字符,所以我绝对难住了!
我希望你能有所帮助。
感谢
transformedDoc.Load(reader.ReadToEnd());
加载
从路径读取;你可能想 transformedDoc.LoadXml(...)
。但在所有诚实,你可以只写了整个事情到的StringWriter
- 更直接:
字符串输出;
使用(VAR作家=新的StringWriter())
{
processor.Transform(xdoc.CreateNavigator(),空,作家);
输出= writer.ToString();
}
另外,将对于非XML输出工作(XSLT没有义务来输出XML)。
Good afternoon all,
I dont know why this is proving so difficult but I must be having one of those days!
I am trying to perform and XslCompiledTransform on an in memory XmlDocument (I have retrieved the XML from a webservice and saved to a database) object. I have the following code so far:
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();
When I try to run this code I get the "illegal characters in path" exception. The path does not contain any of the illegal characters so I am absolutely stumped!
I hope you can help.
Thanks
transformedDoc.Load(reader.ReadToEnd());
Load
reads from a path; you probably want transformedDoc.LoadXml(...)
. But in all honesty, you could just write the whole thing to a StringWriter
- more direct:
string output;
using(var writer = new StringWriter())
{
processor.Transform(xdoc.CreateNavigator(), null, writer);
output = writer.ToString();
}
Plus it will work for non-xml outputs (xslt is not obliged to output xml).
这篇关于使用C#XSLT转换内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!