Come trasformare XML in HTML con XSLT in C #?

Come posso trasformare XML in HTML con XSLT in ASP.NET Core?

Ci ho pensato:

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

ma l’XmlReader non esiste in .NET Core.

Hai qualche idea?

Il System.Xml.Xsl scomparso in .NET Core 1.0 come XSD (XmlSchema) o XSLT (XslTransform) non è supportato in .NET Standard 1.0 , che .NET Core implementa fino alla versione ‘.NET Core 2.0’. Le buone notizie sono che dal momento che .NET Core 2.0 implementa .NET Standard 2.0 , quindi abbiamo di nuovo System.Xml.Xsl .

Se sei confuso con tutti questi standards , frameworks e platforms , guarda il video in questo post. NET 2.0 Standard è fuori ed è impressionante !!!! e vedere la tabella delle versioni standard di .NET per capire quali piattaforms implementano quali standard .NET e cosa è supportato in ogni nuova versione.

Per rispondere alla tua domanda, devi aggiornare l’app .NET Core 2.0 a .NET Core 2.0 e il tuo codice funzionerà di nuovo.

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

Se è necessario restituire XDocument è ansible visualizzare il seguente codice, che è simile alla tua, ma restituisce l’istanza del documento ‘XML’:

 public XDocument Transform(string xml, string xsl) { var originalXml = XDocument.Load(new StringReader(xml)); var transformsdXml = new XDocument(); using (var xmlWriter = transformsdXml.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 transformsdXml; }