【问题标题】:Does XmlMtomReader cache binary data from the input stream internally?XmlMtomReader 是否在内部缓存来自输入流的二进制数据?
【发布时间】:2009-10-01 12:37:01
【问题描述】:

其实我想知道 XmlMtomReader 是否直接从输入流中读取 mime 二进制部分?还是在我调用 ReadContentAsBase64() 方法之前将它们存储在内部?

【问题讨论】:

  • 我认为值得更新问题的标题以反映您真正感兴趣的类型。

标签: c# xml wcf xmlreader mtom


【解决方案1】:

我记得(已经有一段时间了...),XmlMtomReader 执行所需的最小内部存储量,具体取决于 MIME 部分在输入流中出现的顺序。 (MTOM 标准允许它们以任意顺序出现)。

所以如果你的输入流是,例如:

  • 二进制部分 1
  • 然后是主要的 XML 部分,例如

...二进制部分 1......二进制部分 2...

  • 然后是二进制部分 2

会发生什么:

  • 要开始读取 XML(元素“a”),它必须在内部存储二进制部分 1
  • 当您读取元素“b”的内容时,它来自内部存储
  • 当您开始读取元素“c”时,它会在内部存储 XML 的其余部分(元素“d”),并将流推进到 Binary Part 2。当您此时读取元素“c”的内容时,它直接来自流,而不是存储。
  • 当您最后读取元素“d”时,XML 来自内部存储

【讨论】:

  • 感谢您的精彩解释!
猜你喜欢
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多