如何在C#中使用XSLT将XML转换为HTML? [英] How to transform XML to HTML with XSLT in C#?

查看:83
本文介绍了如何在C#中使用XSLT将XML转换为HTML?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在ASP.NET Core中使用XSLT将XML转换为HTML?

How can I transform XML to HTML with XSLT in ASP.NET Core?

我想到了:

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中不存在.

but the XmlReader does not exist in .NET Core.

你有什么主意吗?

推荐答案

System.Xml.Xsl.NET Core 1.0中消失了,因为.NET Standard 1.0不支持XSD (XmlSchema)XSLT (XslTransform),而.NET Core直到版本' .NET Core 2.0". 好消息是,由于.NET Core 2.0 实现了.NET Standard 2.0,所以我们又有了System.Xml.Xsl .

The System.Xml.Xsl disappeared in .NET Core 1.0 as XSD (XmlSchema) or XSLT (XslTransform) is not supported in .NET Standard 1.0, which .NET Core implements until version '.NET Core 2.0'. Good news are that since .NET Core 2.0 it implements .NET Standard 2.0, so we have System.Xml.Xsl again.

如果您对所有这些standardsframeworksplatforms,观看这篇文章中的视频 .NET Standard 2.0是并给人留下深刻的印象!!!!! 并查看. NET标准版本表 了解哪些平台实施什么.NET标准以及每个新版本支持什么.

If you are confused with all of these standards, frameworks and platforms, watch the video in this post .NET Standard 2.0 is out and it’s impressive!!!! and see the .NET Standard Versions table to understand what platforms implement what .NET standards and what is supported in each new version.

因此,要回答您的问题,您需要将您的.NET Core应用升级到.NET Core 2.0 ,您的代码才能再次正常工作.

So to answer your question, you need to upgrade your .NET Core app to .NET Core 2.0 and your code will work again.

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"文档实例,但是返回:

If you need to return XDocument you can the code below, which is similar to your but return instance of 'XML' document:

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;
}

这篇关于如何在C#中使用XSLT将XML转换为HTML?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆