如何在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
。
如果您对所有这些
standards
,frameworks
和platforms
感到困惑,请观看.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; }