网站首页/技术开发列表/内容

有关XSLT输出结果的4个技巧

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

……

相关阅读