使用C#XSLT转换内存 [英] XSLT transformation in memory using C#

查看:121
本文介绍了使用C#XSLT转换内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下午好一切,

我不知道为什么这证明如此困难,但我必须有那些日子之一!

我试图执行和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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆