.Net中用XSLT转换XML文档

在开发中我们经常用到xml文件作为数据的载体。当我们获取到一个XML文件后常常要将其数据提取出来或者将其转换为另一种格式,此时我们需要用到XSLT。

XSLT的全称是Extensible Stylesheet Language Transformations(可扩展样式表转换语言),其最常用的功能就是将XML从一种格式转换为另一种格式。本文中我们将把一个承载Famous People信息的xml文件转换成html文件。在.NET中可以使用XslCompiledTransform类加载XSLT文档并使用xslt文档对xml文档进行转换。示例如下:

承载Famous People信息的xml文档(people.xml):

 1 <?xml version="1.0"?>
 2 <People>
 3     <Person bornDate="1874-11-30 diedDate=1965-01-24">
 4         <Name>Winston Churchill</Name>
 5         <Description>
 6 Winston Churchill was a mid-20th century British politician who
 7 became famous as Prime Minister during the Second World War.
 8         </Description>
 9     </Person>
10     <Person>
11         <Name>Indira Gandhi</Name>
12         <Description>Indira Gandhi was India‘s first female prime minister and was assassinated in 1984.</Description>
13     </Person>
14     <Person bornDate="1917-05-29" diedDate="1963-11-22">
15         <Name>John F. Kennedy</Name>
16         <Description>
17 JFK, as he was affectionately known, was a United States president
18 who was assassinated in Dallas, Texas.
19         </Description>
20     </Person>
21 </People>

用于转换XML结构的XSLT(PeopleToHtml.xslt):

 1 <xsl:stylesheet
 2   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 3   version="1.0">
 4   <xsl:template match="/">
 5     <html>
 6       <head>
 7         <title>Famous People</title>
 8       </head>
 9       <body>
10         <h1>Famous Peoples</h1>
11         <hr/>
12         <ul>
13           <xsl:for-each select="People/Person">
14             <li>
15               <xsl:value-of select="Name/text()"/>
16             </li>
17           </xsl:for-each>
18         </ul>
19       </body>
20     </html>
21   </xsl:template>
22   <xsl:template match="Person">
23     <li>
24       <xsl:value-of select="Name"/>
25     </li>
26   </xsl:template>
27 </xsl:stylesheet>

C#代码:

1      static void Main(string[] args)
2         {
3             XslCompiledTransform objXslt = new XslCompiledTransform();
4             objXslt.Load(@"PeopleToHtml.xslt");
5             objXslt.Transform(@"people.xml", @"people.html");
6             Process.Start(@"people.html");
7             //PressQToExist();
8         }

运行结果:

运行后生成的html源文件内容(people.html):

 1 <html>
 2   <head>
 3     <META http-equiv="Content-Type" content="text/html; charset=utf-8">
 4     <title>Famous People</title>
 5   </head>
 6   <body>
 7     <h1>Famous Peoples</h1>
 8     <hr>
 9     <ul>
10       <li>Winston Churchill</li>
11       <li>Indira Gandhi</li>
12       <li>John F. Kennedy</li>
13     </ul>
14   </body>
15 </html>

本文只是一个在C#中用XslCompiledTransform类配合XSLT对XML进行转换的简单示例,其中XslCompliedTransform还接受其它的构造函数参数,以及XSLT也可以接受外部参数,这些具体用法可以通过查阅MSDN获取。

时间: 2024-10-08 05:30:37

.Net中用XSLT转换XML文档的相关文章

JaveScript 中使用 XSLT转换XML文档

我们经常将数据存储在XML 中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT 对XML数据进行转换. 要学习XSLT对XML的转换,需要先了解三个文件. 第一个是存储数据的XML文件:employees.xml <?xml version="1.0"?> <employees> <employee title="Software Engineer"> <name>Nicholas C. Zakas</n

C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例

XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml的显示样式,我们先来看如何在xml中引用xsl文件 如下代码示例: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="

c#使用XSLT将xml文档转换为html文档

需要引用下面的命名空间: using System.Xml; using System.Xml.Xsl; 方法实现: public static string ConvertXML(XmlDocument InputXMLDocument, string XSLTFilePath , XsltArgumentList XSLTArgs) { System.IO.StringWriter sw = new System.IO.StringWriter(); XslCompiledTransform

java将XML文档转换成json格式数据

功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具包; 2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 程序源码 package com.xxx.open.pay.util; import com.alibaba.fastjson.JSONObject; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdo

ASP.NET 动态查找数据 并且生成xml文档 同时使用xslt转换为xhtml

前言 xsl是一门标签解析语言,很适合做动态网页的前台标签 www.bamn.cn 1 首先是aspx页面 添加一个输入框 按钮 还有一个用来显示解析后的xhtml代码的控件 <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"

使用kettle把XML文档转换成数据表结构

 在kettle中Get data from xml 步骤和 XML Input Stream (StAX)步骤读取并解析xml文件.Get data from xml 步骤使用dom方式解析,比较消耗内存,当文件很大时,就不可取.XML Input Stream (StAX)步骤使用完全不同的方式解析大而复杂的文件,且能快速载入数据,所以建议使用该步骤. 下面通过示例来展示如何使用该步骤,源xml文件内容如下: <?xml version="1.0"?> <ti

用C#读取XML文档

本文将以一个非常简单的例子来说明如何使用C#访问一个XML文件并且读取其中的信息.例子本身并无任何实际意义,它只是简单的介绍了如何调用微软的XML标准以及如何运用到实际当中去.希望能够对初次接触C#或者未尝试过通过C#读取XML文件的读者有所启发.本文旨在抛砖引玉,希望能与更多的朋友交流和分享经验.    制作过程 1. 运行Visual Studio.NET,新建Visual C#.NET工程,这里取名为ReadXML. 2. 在解决方案资源管理器中,将Form1.cs改名为frmAuthor

XML 文档和数据

.NET Framework 4.5 其他版本 .NET Framework 提供了一组全面而集成的类,可用来方便地生成可以识别 XML 的应用程序. 通过以下命名空间中的类,可以分析和编写 XML,编辑内存中的 XML 数据,进行数据验证以及 XSLT 转换. System.Xml System.Xml.XPath System.Xml.Xsl System.Xml.Schema System.Xml.Linq 有关完整列表,请参阅 System.Xml 命名空间网页. 这些命名空间中的类支持

【学习笔记】关于DOM4J:使用DOM4J解析XML文档

一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org.dom4j这个包里定义: 二.DOM4J的接口 Attribute:定义了XML的属性: Branch:是能够包含子节点的节点,如XML元素(Element)和文档(Documents)定义了一个公共的行为: CDATA:定义了XML的CDATA区域: CharacterData:是一个标识接口,标