首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将XmlTextWriter转换为string?

如何将XmlTextWriter转换为string?
EN

Stack Overflow用户
提问于 2010-02-12 14:32:31
回答 2查看 885关注 0票数 0

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

使用下面的代码行执行转换:

代码语言:javascript
复制
objXtrans.Transform(objDoc, objArgLists, objXmlTxtWriter);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-12 19:38:49

如果您希望转换结果为HTML文件,然后转换为文件(流),则不需要首先在内存中组装字符串以将完整的字符串写入文件。

不幸的是,您并没有真正告诉我们您使用的是哪种应用程序接口,您在主题行中提到了XmlTextWriter,所以我假设它就是您使用的.NET框架。自XSLT2.0以来,首选的.NET处理器是System.Xml.Xsl.XslCompiledTransform,如果您查看它的Transform method,那么它有几个重载转换为流,因此您可以简单地使用以下代码:

代码语言:javascript
复制
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)。

票数 1
EN

Stack Overflow用户

发布于 2010-02-14 01:32:10

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

虽然Martin Honnen正确地观察到,在您的示例中,实际上不需要将输出转换为字符串,但以下是如何做到这一点。请注意,这适用于写入TextWriter的任何方法,而不仅仅是XslCompiledTransform.Transform()

代码语言:javascript
复制
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
   MethodThatWritesToATextWriter(sw);
}
string s = sb.ToString();

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

代码语言:javascript
复制
using (StreamWriter sw = new StreamWriter(filename, append))
{
   MethodThatWritesToATextWriter(sw);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2250061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档