当前位置:编程学习 > asp >>

如何将List<T>转换相应的Html(xsl动态转换)(二)

一、前言
紧跟着上一篇随笔,本文主要涉及到如何将xml与xsl动态转换成html,这个才是最关键的地方,所有的内容都是围绕这个主题来进行开展的。根据指定的xsl样式将List<T>转换相应的Html,相关的随笔如下:

(一)、将List<T>转换成DataTable。

(二)、将Xml与Xsl动态转换成Html。

(三)、设置以及控制Xsl的内容样式。

 

二、XslTransform的具体实现

XslTransform主要的职责为:将xml与xsl动态转换成html。其中,XslCompiledTransform 提供了很多方法可以进行相关的转换,但使用起来并不是十分方便,因此必须在该基础上来对目前的类进行相关封装以及提取。具体的代码如下:

 1     public class XslTransform : IDisposable
 2     {
 3         public StringWriter StringWriter
 4         {
 5             get;
 6             private set;
 7         }
 8
 9         public StringReader XmlStringReader
10         {
11             get;
12             private set;
13         }
14
15         public StringReader XslStringReader
16         {
17             get;
18             private set;
19         }
20
21         public XslTransform()
22         {
23             this.StringWriter = new StringWriter();
24         }
25
26         public string Transfer(string xmlText, string xslText)
27         {
28             if (string.IsNullOrWhiteSpace(xmlText)
29                 || string.IsNullOrWhiteSpace(xslText))
30             {
31                 return string.Empty;
32             }
33             this.XmlStringReader = new StringReader(xmlText);
34             this.XslStringReader = new StringReader(xslText);
35
36             return TransferXmlAndXslToHtml();
37         }
38
39         private string TransferXmlAndXslToHtml()
40         {
41             try
42             {
43                 using (XmlTextWriter writer = new XmlTextWriter(this.StringWriter))
44                 {
45                     return ToHtml(writer);
46                 }
47             }
48             catch
49             {
50                 return string.Empty;
51             }
52         }
53
54         private string ToHtml(XmlTextWriter writer)
55         {
56             XslCompiledTransform xslTransform = new XslCompiledTransform();
57             xslTransform.Load(XmlReader.Create(this.XslStringReader));
58             xslTransform.Transform(XmlReader.Create(this.XmlStringReader), writer);
59            
60             return this.StringWriter.ToString();
61         }
62
63         #region IDisposable 成员
64
65         public void Dispose()
66         {
67             this.Dispose(true);
68             GC.SuppressFinalize(this);
69         }
70
71         private void Dispose(bool disposing)
72         {
73             if (this.StringWriter != null)
74             {
75                 this.StringWriter.Dispose();
76             }
77             if (this.XslStringReader != null)
78             {
79                 this.XslStringReader.Dispose();
80             }
81             if (this.XmlStringReader != null)
82             {
83                 this.XmlStringReader.Dispose();
84             }
85         }
86
87         #endregion
88     }
 

 XslTransform 类主要的方法为54-61行的代码,如下所示:

54         private string ToHtml(XmlTextWriter writer)
55         {
56             XslCompiledTransform xslTransform = new XslCompiledTransform();
57          &

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,