最近,我發現在許多討論組中都問到一些如何在.NET平臺下處理XSLT轉換結果的問題,為了回答這些問題,本文將介紹幾種方法,這些方法均用到了System.Xml.Xsl命名空間下的XslTransform類。明確地說,我會介紹如何用StringWriter類、 XmlTextWriter類、 XmlReader類和 MemoryStream類來捕獲XSLT轉換結果。在理解了在這些不同類中的處理過程之后,你可以選擇一個最合適的用到你自己的程序中。
下面的例子會用到一個名為doc的XPathDocument類的實例(其中加載了需要轉換的XML文檔)和一個名為trans的XslTransform類的實例(負責執行從XML到HTML的轉換)。轉換的結果會被轉化成一個字符串類型,而且為了顯示和比較的目的,它將被寫進一個TextBox Web Server控件的Text屬性中去。生成XPathDocument類和XslTransform類的實例代碼如下所示:XPathDocument doc = new XPathDocument(Server.MapPath ("XML/Customers.xml")); XslTransform trans = new XslTransform(); trans.Load(Server.MapPath("XSLT/Customers.xslt"));
用StringWriter類處理XSLT結果 StringWriter類繼承了TextWriter抽象類中的功能,它使用方便,并能提供在幕后自動生成一個StringBuilder類的各種便利條件。StringBuilder類可以通過調用 ToString() 方法得到XSLT的轉換結果。
以下是一個將StringWriter類和XslTransform類結合使用的例子://************ 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();
|