用C#在内存中进行XSLT转换

3

大家下午好,

我不知道为什么这个问题如此困难,可能是我今天状态不佳!

我正在尝试对一个内存中的XmlDocument对象执行XslCompiledTransform(我已从Web服务检索到XML并保存到数据库中)。目前我有以下代码:

        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();

当我尝试运行这段代码时,我遇到了“路径中存在非法字符”的异常。路径不包含任何非法字符,所以我真的很困惑!希望你能帮帮我。谢谢。

您是否拥有针对Windows操作系统的不同本地化以及针对VisualStudio的英文本地化? - apros
xdoc的类型是什么? - FailedDev
1个回答

8
transformedDoc.Load(reader.ReadToEnd());

Load 从路径中读取内容;你可能想要使用 transformedDoc.LoadXml(...)。但说实话,你也可以将整个内容写入 StringWriter 中——更加直接:

string output;
using(var writer = new StringWriter())
{
    processor.Transform(xdoc.CreateNavigator(), null, writer);
    output = writer.ToString();
}

此外,它还可以用于非XML输出(XSLT不必输出XML)。


1
非常感谢 - 我今天的头脑简直不太好用!再次感谢。 - JordanMazurke
奇怪。在“Transform”调用中,我得到了“XslTransformException:无法从已加载的输入文档中剥离空格。请提供XmlReader作为输入文档。”谁知道为什么它不能剥离空格,也不知道为什么需要这样做。 - Jesse Chisholm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接