.NET转换后不推荐使用XslTransform类

时间:2011-06-22 13:19:14

标签: c# .net xml xslt

我在一个旧程序中使用了XslTransform,在将代码转换为.NET F 3.5之后,编译器说不推荐使用XslTransform并将其替换为XslCompiledTransform。

这是旧代码:

XslTransform xslt = new XslTransform();
xslt.Load(xslTemplate);
xslt.Transform(xPathNav, null, fileStream, null);

我已将代码更改为:

XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xslTemplate); 
xslt.Transform(xPathNav, fileStream);

现在我明白了:

  

无法转换   'System.IO.FileStream'来   'System.Xml.XmlWriter'

我尝试通过添加以下内容来纠正错误:

XPathDocument doc = new XPathDocument(fileStream);
XmlWriter writer = XmlWriter.Create(Console.Out, xslt.OutputSettings);
xslt.Transform(doc, writer);

我不再出错了,但我的代码没有进行XML转换。

有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:3)

我认为

XslTransform xslt = new XslTransform();
xslt.Load(xslTemplate);
xslt.Transform(xPathNav, null, fileStream, null);

可以使用XslCompiledTransform

编写如下
XslTransform xslt = new XslCompiledTransform();
xslt.Load(xslTemplate);
xslt.Transform(xPathNav, null, fileStream);

答案 1 :(得分:2)

MSDN实际上有一篇关于Migrating From XslTransform to XslCompiledTransform

的完整文章

答案 2 :(得分:0)

在前几个代码段中,您似乎使用fileStream表示输出,xPathNav表示输入。

但在最后一个片段中,您使用fileStream(通过doc)进行输入。

您真的将fileStream更改为输入文档,还是错误?