使用C#XSLT转换内存内存、XSLT

由网友(手拿爽歪歪,心中自然嗨~)分享简介:下午好一切,我不知道为什么这证明如此困难,但我必须有那些日子之一!我试图执行和XslCompiledTransform上内存的XmlDocument(我已经检索的XML从一个web服务,并保存到数据库中)的对象。我有以下的code到目前为止:字符串xslFile =C:\\ MOJLogViewer \\ GetCla...

下午好一切,

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

我试图执行和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:MOJLogViewerGetClaimTransformed.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).

阅读全文

相关推荐

最新文章