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