zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    {purple8}
    {purple7}
    {暴力}
    uva1103(dfs)
    {purple5练习题}
    c++复习题
    关于继承
    lrj紫书第五章
    20个Linux系统监视工具
    linux上配置jdk+Apache
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/3262044.html
Copyright © 2011-2022 走看看