• 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>
    
  • 相关阅读:
    转载 | float 清除浮动的7种方法
    转载 | CSS图片下面产生间隙的 6种解决方案
    (转载)内联元素设置宽高问题
    HTML/CSS:display:flex 布局教程
    HTML/CSS:block,inline和inline-block概念和区别
    上传文件
    分页查询 模糊查询 合体查询
    repeater的command用法
    窗体内的控制 跨窗体控制
    webform 跨窗体传值
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/3262044.html
Copyright © 2020-2023  润新知