我在一个旧程序中使用了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转换。
有什么想法吗?
感谢。
答案 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
更改为输入文档,还是错误?