.net 如何将XmlTextWriter转换为字符串?
我是XSLT转换领域的新手。我正在使用XSLT创建一个HTML文件。如何将输出获取为字符串,以便将其保存到HTML文件中 使用以下行执行转换:.net 如何将XmlTextWriter转换为字符串?,.net,xslt,.net,Xslt,我是XSLT转换领域的新手。我正在使用XSLT创建一个HTML文件。如何将输出获取为字符串,以便将其保存到HTML文件中 使用以下行执行转换: objXtrans.Transform(objDoc, objArgLists, objXmlTxtWriter); 如何转换objXmlTxtWriter以获得通过Transform()方法生成的可另存为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);
}