如何使用.NET中的文件将XML转换为字符串?

Bil*_*zke 24 c# xml xslt

假设我有两个字符串:

  • 一个是XML数据
  • 另一个是XSL数据.

如果您必须知道,xml和xsl数据将存储在数据库列中.

如何在C#中转换XML w/o首先将xml和xsl保存为文件?我希望输出也是一个字符串(转换中的HTML).

似乎C#更喜欢通过文件进行转换.我在XslCompiledTransform中找不到Load()的字符串输入重载.所以,这就是我要问的原因.

Bil*_*zke 40

这就是我的用途.这是你的答案的组合.我投了这些灵感的答案:

string output = String.Empty;
using (StringReader srt = new StringReader(xslInput)) // xslInput is a string that contains xsl
using (StringReader sri = new StringReader(xmlInput)) // xmlInput is a string that contains xml
{
    using (XmlReader xrt = XmlReader.Create(srt))
    using (XmlReader xri = XmlReader.Create(sri))
    {
        XslCompiledTransform xslt = new XslCompiledTransform();
        xslt.Load(xrt);
        using (StringWriter sw = new StringWriter())
        using (XmlWriter xwo = XmlWriter.Create(sw, xslt.OutputSettings)) // use OutputSettings of xsl, so it can be output as HTML
        {
            xslt.Transform(xri, xwo);
            output = sw.ToString();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:xsl中需要此语句,以便以HTML格式输出:

<xsl:output method="html" omit-xml-declaration="yes" />
Run Code Online (Sandbox Code Playgroud)


moo*_*ogs 5

您可以从StringReaderMemoryStream进行XmlReader.Create()。XslCompileTransfrom可以从XmlReader加载()

  • 实际上,我将使用StringReader传递给XmlReader.Create。 (2认同)

Rob*_*ney 5

我花了很长时间(几年)才弄清楚如果你使用正确的习语,如何使用Stream和/或TextWriter可以使用简洁的代码.

假设transform并且input是字符串:

StringWriter sw = new StringWriter();
using (XmlReader xrt = XmlReader.Create(new StringReader(transform))
using (XmlReader xri = XmlReader.Create(new StringReader(input))
using (XmlWriter xwo = XmlWriter.Create(sw))
{
   XslCompiledTransform xslt = new XslCompiledTransform();
   xslt.Load(xrt);
   xslt.Transform(xri, xwo);
}
string output = sw.ToString();
Run Code Online (Sandbox Code Playgroud)