c# - 如何从 Visual Studio 2003 中的调试器检查 XML 流

标签 c# xml stream .net-1.1 visual-studio-2003

我必须编辑一个 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/

相关文章:

c++ - 我如何在阅读时 "unzip"gzip 流

java - JOOX 命名空间支持

scala - 直到?处理分块输入。如何?

c# - 更改 WebJobs 连接字符串 AzureWebJobsStorage 和 AzureWebJobsDashboard 的默认名称

c# - Visual Studio 从哪里获取 COM DLL 版本

xml - 如何使用 XML 根据图像大小调整 Android 组件的大小

java - 如何在非常大的 XML 文件中快速搜索/索引?

objective-c - 在 Mac 上获取 SHOUTcast 元数据

c# - 移动进度条不在 c# wpf 中显示百分比

任何地方的 C# Winforms ListView DoubleClick 事件