本文实例讲述了C#实现XSL转换的方法。分享给大家供大家参考,具体如下:
xsl 可方便的将一种格式的xml,转换成另一种格式的xml,参考下面的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
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(); } } } |
输出结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
< 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 > |
希望本文所述对大家C#程序设计有所帮助。