.net 如何将XmlTextWriter转换为字符串?

.net 如何将XmlTextWriter转换为字符串?,.net,xslt,.net,Xslt,我是XSLT转换领域的新手。我正在使用XSLT创建一个HTML文件。如何将输出获取为字符串,以便将其保存到HTML文件中 使用以下行执行转换: objXtrans.Transform(objDoc, objArgLists, objXmlTxtWriter); 如何转换objXmlTxtWriter以获得通过Transform()方法生成的可另存为HTML的完整字符串?如果希望转换结果为HTML文件,则转换为文件(流),无需首先在内存中组装字符串,即可将完整的字符串写入文件 不幸的是,您没有真

我是XSLT转换领域的新手。我正在使用XSLT创建一个HTML文件。如何将输出获取为字符串,以便将其保存到HTML文件中

使用以下行执行转换:

objXtrans.Transform(objDoc, objArgLists, objXmlTxtWriter);

如何转换
objXmlTxtWriter
以获得通过
Transform()
方法生成的可另存为HTML的完整字符串?

如果希望转换结果为HTML文件,则转换为文件(流),无需首先在内存中组装字符串,即可将完整的字符串写入文件

不幸的是,您没有真正告诉我们您使用的API,您在主题行中提到了XmlTextWriter,所以我假设您使用的是.NET框架。由于.NET 2.0首选的XSLT处理器是System.Xml.Xsl.xslcomiledTransform,如果您查看它,那么它有几个重载转换为流,因此您可以简单地使用如下代码:

XslCompiledTransform proc = new XslCompiledTransform();
proc.Load("sheet.xsl");
using (FileStream stream = File.OpenWrite("result.html"))
{
  proc.Transform(someInput, someArgumentList, stream);
}

第一个参数有很多选项,它可以是带有输入文件名或URI的字符串,也可以是XmlReader,也可以是实现IXPathNavigable的对象(例如XmlDocument或XPathDocument)。

这实际上是关于
文本编写器
的问题,而不是关于XML的问题。NET XSLT工具的所有文档都假定您已经知道如何在.NET中执行基于流和基于文本的IO。如果你不这样做,你可能会做很多不必要的工作。(我说的“你”是指“我”,而“可能”是指“做过”)

虽然Martin Honnen正确地观察到,在您的情况下,实际上不需要将输出转换为字符串,但下面介绍了如何实现。请注意,这适用于任何写入
TextWriter
的方法,而不仅仅是
xslcomiledtransform.Transform()

尽管您可以在特定情况下使用
FileStream
写入文件,
FileStream
流,而不是
TextWriter
。您只能将其与
Transform
一起使用,因为
Transform
的一个重载将
作为输出参数。如果需要使用
TextWriter
,则作业的工具是
StreamWriter

using (StreamWriter sw = new StreamWriter(filename, append))
{
   MethodThatWritesToATextWriter(sw);
}
using (StreamWriter sw = new StreamWriter(filename, append))
{
   MethodThatWritesToATextWriter(sw);
}