C# 使用C在内存中进行XSLT转换#
大家下午好 我不知道为什么这是如此困难,但我必须有一个这样的日子 我正在尝试对内存中的XmlDocument(我已从Web服务检索XML并保存到数据库)对象执行XslCompiledTransform和XslCompiledTransform。到目前为止,我有以下代码:C# 使用C在内存中进行XSLT转换#,c#,.net,xml,xslt,xmldocument,C#,.net,Xml,Xslt,Xmldocument,大家下午好 我不知道为什么这是如此困难,但我必须有一个这样的日子 我正在尝试对内存中的XmlDocument(我已从Web服务检索XML并保存到数据库)对象执行XslCompiledTransform和XslCompiledTransform。到目前为止,我有以下代码: string xslFile = "C:\\MOJLogViewer\\GetClaimTransformed.xslt"; XslCompiledTransform processor = n
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();
当我试图运行这段代码时,我得到了“路径中的非法字符”异常。路径不包含任何非法字符,因此我完全被难住了
我希望你能帮忙
谢谢
Load
从路径读取;您可能需要transformedDoc.LoadXml(…)
。但老实说,你可以把整件事写给一个StringWriter
——更直接:
string output;
using(var writer = new StringWriter())
{
processor.Transform(xdoc.CreateNavigator(), null, writer);
output = writer.ToString();
}
此外,它还适用于非xml输出(xslt不必输出xml)。您对Windows操作系统和VisualStudio有不同的本地化版本吗?xdoc的类型是什么?非常感谢-我的头今天根本不工作!再次感谢你。在
Transform
调用中,我得到了XslTransformException:whitespace不能从已经加载的输入文档中删除。将输入文档改为XmlReader。
谁知道它为什么不能去除空白,也不知道为什么需要去除空白。
string output;
using(var writer = new StringWriter())
{
processor.Transform(xdoc.CreateNavigator(), null, writer);
output = writer.ToString();
}