我正在VB.NET中编写命令行应用程序。此应用程序调用另一个msxsl.exe来运行XSL转换。我使用Process类来做到这一点:将标准输出从进程(msxsl.exe)重定向到VB.NET中的字符串
Dim process = New Process()
process.StartInfo.FileName = "msxsl.exe"
process.StartInfo.Arguments = "base.xml test.xsl -o styled.xml"
process.StartInfo.UseShellExecute = False
process.StartInfo.CreateNoWindow = True
process.StartInfo.RedirectStandardOutput = True
process.Start()
这部分的伟大工程。我希望它能够将此过程的输出显示到我的应用程序的控制台。我已经阅读了几篇文章解释这种方法,但在这种情况下似乎不起作用。输出是一个空字符串。
Dim output As String = process.StandardOutput.ReadToEnd()
process.WaitForExit()
Console.WriteLine(output)
我已经验证,如果我自身运行msxsl可执行文件(即,在运行“MSXSL.EXE base.xml test.xsl -o styled.xml”),它显示在命令行上输出。我究竟做错了什么?
编辑:我应该注意到msxsl进程目前由于格式错误的XML文件而失败。它正在显示此错误消息:
执行样式表'test.xsl'时发生错误。
代码:0x800c0006
系统找不到指定的对象。
这正是我想要显示在我的应用程序的控制台型的事(或最终的日志文件。)
好奇:你为什么不使用内置(.NET的XSLT能力又名[XsltCompiledTransform](http://msdn.microsoft.com/en-us/library/system.xml .xsl.xslcompiledtransform.aspx)? – Tomalak 2010-11-24 14:26:13
Tomalak,我不知道有这样的课程,谢谢你的提示,我会看看我能否以这种方式实现它 – Jeremy 2010-11-24 14:30:20