有關(guān)XSLT輸出結(jié)果的4個(gè)技巧
發(fā)表時(shí)間:2023-08-08 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]最近,我發(fā)現(xiàn)在許多討論組中都問(wèn)到一些如何在.NET平臺(tái)下處理XSLT轉(zhuǎn)換結(jié)果的問(wèn)題,為了回答這些問(wèn)題,本文將介紹幾種方法,這些方法均用到了System.Xml.Xsl命名空間下的XslTransfo...
最近,我發(fā)現(xiàn)在許多討論組中都問(wèn)到一些如何在.NET平臺(tái)下處理XSLT轉(zhuǎn)換結(jié)果的問(wèn)題,為了回答這些問(wèn)題,本文將介紹幾種方法,這些方法均用到了System.Xml.Xsl命名空間下的XslTransform類(lèi)。明確地說(shuō),我會(huì)介紹如何用StringWriter類(lèi)、 XmlTextWriter類(lèi)、 XmlReader類(lèi)和 MemoryStream類(lèi)來(lái)捕獲XSLT轉(zhuǎn)換結(jié)果。在理解了在這些不同類(lèi)中的處理過(guò)程之后,你可以選擇一個(gè)最合適的用到你自己的程序中。
下面的例子會(huì)用到一個(gè)名為doc的XPathDocument類(lèi)的實(shí)例(其中加載了需要轉(zhuǎn)換的XML文檔)和一個(gè)名為trans的XslTransform類(lèi)的實(shí)例(負(fù)責(zé)執(zhí)行從XML到HTML的轉(zhuǎn)換)。轉(zhuǎn)換的結(jié)果會(huì)被轉(zhuǎn)化成一個(gè)字符串類(lèi)型,而且為了顯示和比較的目的,它將被寫(xiě)進(jìn)一個(gè)TextBox Web Server控件的Text屬性中去。生成XPathDocument類(lèi)和XslTransform類(lèi)的實(shí)例代碼如下所示:XPathDocument doc =
new XPathDocument(Server.MapPath
("XML/Customers.xml"));
XslTransform trans = new XslTransform();
trans.Load(Server.MapPath("XSLT/Customers.xslt"));
用StringWriter類(lèi)處理XSLT結(jié)果
StringWriter類(lèi)繼承了TextWriter抽象類(lèi)中的功能,它使用方便,并能提供在幕后自動(dòng)生成一個(gè)StringBuilder類(lèi)的各種便利條件。StringBuilder類(lèi)可以通過(guò)調(diào)用 ToString() 方法得到XSLT的轉(zhuǎn)換結(jié)果。
以下是一個(gè)將StringWriter類(lèi)和XslTransform類(lèi)結(jié)合使用的例子://************ StringReader XSLT Output Capture
StringWriter sw = new StringWriter();
trans.Transform(doc,null,sw);
/*
A StringBuilder class is automatically written to
by the StringWriter class. To get the value in
the StringBuilder you can use the ToString()
method as shown below
*/
this.txtStringBuilder.Text = sw.ToString();
sw.Close();