[英]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
。
如果您對所有這些
standards
,frameworks
和platforms
感到困惑,請觀看本文中的視頻。.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.