如何在C#中使用XSLT将XML转换为HTML?

如何在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(); } 

但.NET Core中不存在XmlReader。

你有什么主意吗?

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感到困惑,请观看.NET Standard 2.0这篇文章中的video,这令人印象深刻!!!! 并查看.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; }