首页 > 编程 > C# > 正文

C#实现XSL转换的方法

2020-01-24 01:21:43
字体:
来源:转载
供稿:网友

本文实例讲述了C#实现XSL转换的方法。分享给大家供大家参考,具体如下:

xsl 可方便的将一种格式的xml,转换成另一种格式的xml,参考下面的代码:

using System;using System.IO;using System.Text;using System.Xml;using System.Xml.Xsl;namespace XslLoad{  class Program  {    static void Main(string[] args)    {      string xml = @"<?xml version='1.0' encoding='ISO-8859-1'?><catalog> <cd>  <title>Empire Burlesque</title>  <artist>Bob Dylan</artist>  <country>USA</country>  <company>Columbia</company>  <price>10.90</price>  <year>1985</year> </cd></catalog>";      string xsl = @"<?xml version='1.0' encoding='ISO-8859-1'?><xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'><xsl:template match='/'> <html> <body>  <h2>My CD Collection</h2>  <table border='1'>  <tr bgcolor='#9acd32'>   <th align='left'>Title</th>   <th align='left'>Artist</th>  </tr>  <xsl:for-each select='catalog/cd'>  <tr>   <td><xsl:value-of select='title'/></td>   <td><xsl:value-of select='artist'/></td>  </tr>  </xsl:for-each>  </table> </body> </html></xsl:template></xsl:stylesheet>";      string result = XslTransform(xml, xsl);      Console.WriteLine(result);      Console.Read();    }    /// <summary>    /// 将Xml利用Xsl转换成目标xml    /// </summary>    /// <param name="inputXmlConent">输入的xml</param>    /// <param name="inuptXslContent">xsl</param>    /// <returns>转换后的目标xml</returns>    static String XslTransform(string inputXmlConent, string inuptXslContent)    {      XmlReader readerXml = XmlReader.Create(new MemoryStream(UTF8Encoding.UTF8.GetBytes(inputXmlConent)));      XmlReader readerXsl = XmlReader.Create(new MemoryStream(UTF8Encoding.UTF8.GetBytes(inuptXslContent)));      XslCompiledTransform transform = new XslCompiledTransform();      transform.Load(readerXsl);      StringBuilder sb = new StringBuilder();      XmlWriterSettings Settings = new XmlWriterSettings()      {        Indent = true,        ConformanceLevel = ConformanceLevel.Auto      };      XmlWriter writer = XmlWriter.Create(sb, Settings);      transform.Transform(readerXml, writer);      return sb.ToString();    }  }}

输出结果:

<html> <body>  <h2>My CD Collection</h2>  <table border="1">   <tr bgcolor="#9acd32">    <th align="left">Title</th>    <th align="left">Artist</th>   </tr>   <tr>    <td>Empire Burlesque</td>    <td>Bob Dylan</td>   </tr>  </table> </body></html>

希望本文所述对大家C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表