最近,我发现在许多讨论组中都问到一些如何在.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();
|