如何将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 ,