簡體   English   中英

如何在C#中使用XSLT將XML轉換為HTML?

[英]How to transform XML to HTML with XSLT in C#?

如何在ASP.NET Core中使用XSLT將XML轉換為HTML?

我想到了:

public static string TransformXMLToHTML(string inputXml, string xsltString)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using(XmlReader reader = XmlReader.Create(new StringReader(xsltString))) {
        transform.Load(reader);
    }
    StringWriter results = new StringWriter();
    using(XmlReader reader = XmlReader.Create(new StringReader(inputXml))) {
        transform.Transform(reader, null, results);
    }
    return results.ToString();
}

但是XmlReader在.NET Core中不存在。

你有什么主意嗎?

System.Xml.Xsl.NET Core 1.0消失了,因為.NET Standard 1.0不支持XSD (XmlSchema)XSLT (XslTransform) .NET Standard 1.0 .NET Core直到版本'.NET Core 2.0'時才實現。 好消息是,由於.NET Core 2.0實現了.NET Standard 2.0 ,因此我們又有了System.Xml.Xsl

如果您對所有這些standardsframeworksplatforms感到困惑,請觀看本文中的視頻。.NETStandard 2.0已經發布,令人印象深刻! 並查看“ .NET標准版本”表,以了解哪些平台實施了什么.NET標准以及每個新版本中所支持的內容。

因此,要回答您的問題, 您需要將.NET Core應用程序升級到.NET Core 2.0 ,您的代碼才能再次運行。

public static string TransformXMLToHTML(string inputXml, string xsltString)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using(XmlReader reader = XmlReader.Create(new StringReader(xsltString))) {
        transform.Load(reader);
    }
    StringWriter results = new StringWriter();
    using(XmlReader reader = XmlReader.Create(new StringReader(inputXml))) {
        transform.Transform(reader, null, results);
    }
    return results.ToString();
}

如果您需要返回XDocument ,則可以使用下面的代碼,該代碼類似於您的“ XML”文檔實例,但返回的是:

public XDocument Transform(string xml, string xsl)
{
    var originalXml = XDocument.Load(new StringReader(xml));

    var transformedXml = new XDocument();
    using (var xmlWriter = transformedXml.CreateWriter())
    {
        var xslt = new XslCompiledTransform();
        xslt.Load(XmlReader.Create(new StringReader(xsl)));

        // Add XSLT parameters if you need
        XsltArgumentList xsltArguments = null; // new XsltArgumentList();
        // xsltArguments.AddParam(name, namespaceUri, parameter);

        xslt.Transform(originalXml.CreateReader(), xsltArguments, xmlWriter);
    }

    return transformedXml;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM