使用C#中的XSLT将XML转换为HTML的最简单方法?

XSLT新手问题:请填写下面C#代码片段中的空白:

public static string TransformXMLToHTML(string inputXml, string xsltString) { // insert code here to apply the transform specified by xsltString to inputXml // and return the resultant HTML string. // You may assume that the xslt output type is 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(); } 

请注意,理想情况下,您将缓存并重新使用XslCompiledTransform – 或者可能使用XslTransform (但它被标记为已弃用)。

只是为了好玩,一个稍微不那么优雅的版本实现了Marc建议的缓存:

  public static string TransformXMLToHTML(string inputXml, string xsltString) { XslCompiledTransform transform = GetAndCacheTransform(xsltString); StringWriter results = new StringWriter(); using (XmlReader reader = XmlReader.Create(new StringReader(inputXml))) { transform.Transform(reader, null, results); } return results.ToString(); } private static Dictionary cachedTransforms = new Dictionary(); private static XslCompiledTransform GetAndCacheTransform(String xslt) { XslCompiledTransform transform; if (!cachedTransforms.TryGetValue(xslt, out transform)) { transform = new XslCompiledTransform(); using (XmlReader reader = XmlReader.Create(new StringReader(xslt))) { transform.Load(reader); } cachedTransforms.Add(xslt, transform); } return transform; }