我必须编辑一个 XSLT 样式表,但我正在盲目飞行,因为 XML 输入仅在一堆流中短暂存在。我可以调试代码,但无法弄清楚如何将流的内容输出到我可以查看的文本中(并在我编辑它们时手动运行 XSLT)。
该代码是一个大型旧遗留系统的一部分,如果绝对必要,我可以在调试环境中修改它,但它在连接到一堆 MSMQ 的 Windows 服务中运行。因此出于各种原因,我宁愿能够使用调试器来查看 XML,而不必先更改代码。
代码大大简化,是这样的:(C# - 但请记住它是 VS 2003 中的 .net 1.1。)
该函数将 XML 作为流获取,然后将其馈送到某种 XSLT 转换对象中。我尝试在监 window 口和即时窗口中查看 writer 和 xmlStream 对象,但无法完全理解如何查看实际的 XML。
private MemoryStream GetXml()
{
MemoryStream xmlStream;
xmlStream = new MemoryStream();
XmlWriter writer = new XmlTextWriter(xmlStream, Encoding.UTF8);
writer.WriteStartDocument();
//etc etc...
writer.WriteEndDocument();
writer.Flush();
xmlStream.Position = 0;
return xmlStream; //Goes off to XSLT transform thingy!
}
非常感谢所有帮助。
最佳答案
您可以在 MemoryStream 准备好后简单地将此表达式添加到您的监 window 口:
(new StreamReader(xmlStream)).ReadToEnd();
监视表达式不需要是简单的变量值。它们可以是复杂的表达式,但它们会有副作用。正如您所注意到的,这将中断执行,因为流内容将被完全读出。如果您需要重新开始执行,您可以在中断后使用另一个表达式重新创建流。
这种情况在使用流调试代码时经常出现,所以我避免使用它们来执行简单、独立的任务。不幸的是,对于大型系统,事先知道是否应该使代码面向流并不总是那么容易,因为这在很大程度上取决于它的使用方式。然而,我认为在许多情况下使用流是过早的优化。
关于c# - 如何从 Visual Studio 2003 中的调试器检查 XML 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830408/